⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 persongroup.java

📁 Very good Java Applet used to animate Inserting, Deleting and Searching (Preorder & Postorder algori
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Timer;

class personGroup
{

    public personGroup()
    {
        theStack = new stack();
        isRand = true;
        codePart = 1;
        drawMode = 2;
        treeArray = new person[31];
        for(int i = 0; i < 31; i++)
            treeArray[i] = null;

        filledNodes = 0;
        note = "KORENSKA STABLA                     Autori: Ivan Stojiljkovic i Milan Zikic";
        visitArray = new int[31];
        visitIndex = 0;
    }

    public person makePerson(int i)
    {
        int j = 100 + (int)(Math.random() * 154D);
        int k = 100 + (int)(Math.random() * 154D);
        int l = 100 + (int)(Math.random() * 154D);
        Color color = new Color(j, k, l);
        return new person(i, color);
    }

    public void setDrawAll(boolean flag)
    {
        drawAll = flag;
    }
    public void reset(int i)
    {
        int j = 0;
        for(int l = 0; l < 31; l++)
            treeArray[l] = null;

        filledNodes = 0;
        boolean aflag[] = new boolean[100];
        for(int i1 = 0; i1 < 100; i1++)
            aflag[i1] = false;

        while(filledNodes < i && j < 100) 
        {
            int k;
            do
                k = (int)(Math.random() * 99D);
            while(aflag[k]);
            person person1 = makePerson(k);
            curIn = 0;
            do
            {
                if(curIn > 30)
                {
                    j++;
                    break;
                }
                if(treeArray[curIn] == null)
                {
                    treeArray[curIn] = person1;
                    filledNodes++;
                    aflag[k] = true;
                    break;
                }
                if(k < treeArray[curIn].getHeight())
                    curIn = 2 * curIn + 1;
                else
                    curIn = 2 * curIn + 2;
            } while(true);
        }
        note = "Stablo je resetovano! Mozete kreirati novo!";
//        while (theStack.isEmpty()==false)
//        	do {theStack.pop();} while(true);
        visitIndex = 0;
        curIn = 0;
        oldArrow = curInOld;
        curInOld = 0;
        drawMode = 0;
        doFill(1);
//        fill(true, 0);
    }
    public void fill(boolean flag, int i)
    {
        if(opMode != 1)
        {
            opMode = 1;
            codePart = 1;
        }
        switch(codePart)
        {
        case 1: // '\001'
            visitIndex = 0;
            note = "Unesite broj cvorova za kreiranje (od 1 do 30):";
            curIn = 0;
            oldArrow = curInOld;
            curInOld = 0;
            drawMode = 0;
            codePart = 2;
            return;

        case 2: // '\002'
            if(!flag || i < 0 || i > 30)
            {
                note = "Niste uneli odgovarajuci broj cvorova!";
                codePart = 1;
                return;
            } else
            {
                note = "Kreirace se stablo sa " + i + " cvorova!";
                codePart = 3;
                return;
            }

        case 3: // '\003'
            doFill(i);
            drawMode = 2;
            note = "Izaberite neku od operacija!";
            oldArrow = curInOld;
            curInOld = 0;
            codePart = 1;
            return;
        }
    }

    public void doFill(int i)
    {
        int j = 0;
        for(int l = 0; l < 31; l++)
            treeArray[l] = null;

        filledNodes = 0;
        boolean aflag[] = new boolean[100];
        for(int i1 = 0; i1 < 100; i1++)
            aflag[i1] = false;

        while(filledNodes < i && j < 100) 
        {
            int k;
            do
                k = (int)(Math.random() * 99D);
            while(aflag[k]);
            person person1 = makePerson(k);
            curIn = 0;
            do
            {
                if(curIn > 30)
                {
                    j++;
                    break;
                }
                if(treeArray[curIn] == null)
                {
                    treeArray[curIn] = person1;
                    filledNodes++;
                    aflag[k] = true;
                    break;
                }
                if(k < treeArray[curIn].getHeight())
                    curIn = 2 * curIn + 1;
                else
                    curIn = 2 * curIn + 2;
            } while(true);
        }
    }

    public void find(boolean flag, int i)
    {
        if(opMode != 2)
        {
            opMode = 2;
            codePart = 1;
        }
        switch(codePart)
        {
        case 1: // '\001'
            visitIndex = 0;
            note = "Upisite koji cvor zelite da nadjete!";
            curIn = 0;
            oldArrow = curInOld;
            curInOld = 0;
            drawMode = 0;
            codePart = 2;
            return;

        case 2: // '\002'
            if(!flag || i < 0 || i > 99)
            {
                note = "Vrednosti cvorova mogu da budu od 1 do 99!";
                codePart = 1;
                return;
            } else
            {
                note = "Trazimo cvor " + i;
                codePart = 3;
                return;
            }

        case 3: // '\003'
            if(treeArray[curIn] == null)
            {
                note = "Ne mogu da pronadjem trazeni cvor!";
                codePart = 1;
                return;
            }
            if(i == treeArray[curIn].getHeight())
            {
                note = "Cvor " + i + " je pronadjen!";
                oldArrow = curInOld;
                curInOld = curIn;
                codePart = 4;
                return;
            }
            oldArrow = curInOld;
            curInOld = curIn;
            if(i < treeArray[curIn].getHeight())
            {
                curIn = 2 * curIn + 1;
                note = "Prelazimo na levo dete!";
            } else
            {
                curIn = 2 * curIn + 2;
                note = "Prelazimo na desno dete!";
            }
            codePart = 3;
            if(curIn > 30)
            {
                note = "Ne mogu da pronadjem trazeni cvor!";
                codePart = 1;
                return;
            }
            break;

        case 4: // '\004'
            note = "Pretraga je zavrsena!";
            codePart = 5;
            return;

        case 5: // '\005'
            note = "Izaberite neku od operacija!";
            oldArrow = curInOld;
            curInOld = 0;
            codePart = 1;
            return;
        }
    }

    
    public void insert(boolean flag, int i)
    {
        if(opMode != 3)
        {
            opMode = 3;
            codePart = 1;
        }
        switch(codePart)
        {
        case 1: // '\001'
            visitIndex = 0;
            note = "Upisite vrednost cvora koji DODAJETE!";
            curIn = 0;
            oldArrow = curInOld;
            curInOld = 0;
            drawMode = 0;
            codePart = 2;
            return;

        case 2: // '\002'
            value = i;
            if(!flag || i < 0 || i > 99)
            {
                note = "Vrednosti cvorova mogu da budu od 1 do 99!";
                codePart = 1;
                return;
            } else
            {
                note = "Dodajemo cvor " + value;
                codePart = 3;
                return;
            }

        case 3: // '\003'
            oldArrow = curInOld;
            curInOld = curIn;
            if(curIn > 30)
            {
                note = "Ne mogu da dodam ovaj cvor!";
                codePart = 4;
                return;
            }
            if(treeArray[curIn] == null)
            {
                treeArray[curIn] = makePerson(value);
                value = treeArray[curIn].getHeight();
                note = "Dodali smo cvor " + value;
                filledNodes++;
                curInOld = curIn;
                drawMode = 1;
                codePart = 4;
                return;
            }
            if(value == treeArray[curIn].getHeight())
            {
                note = "Trazeni cvor vec postoji! Ne mogu da ga dodam ponovo!";
                codePart = 5;
                return;
            }
            if(value < treeArray[curIn].getHeight())
            {
                curIn = 2 * curIn + 1;
                note = "Prelazimo na levo dete!";
            } else
            {
                curIn = 2 * curIn + 2;
                note = "Prelazimo na desno dete!";
            }
            codePart = 3;
            if(curIn > 30)
            {
                note = "Ne mogu da dodam ovaj cvor!";
                codePart = 1;
            }
            drawMode = 0;
            return;

        case 4: // '\004'
            note = "Dodavanje cvora je zavrseno!";
            drawMode = 0;
            codePart = 5;
            return;

        case 5: // '\005'
            note = "Izaberite neku od operacija!";
            oldArrow = curInOld;
            curInOld = 0;
            codePart = 1;
            return;
        }
    }
    public void remove(boolean flag, int i)
    {
        if(opMode != 4)
        {
            opMode = 4;
            codePart = 1;
        }
        switch(codePart)
        {
        default:
            break;

        case 1: // '\001'
            visitIndex = 0;
            note = "Upisite vrednost cvora koji BRISETE!";
            codePart = 2;
            curIn = 0;
            oldArrow = curInOld;
            curInOld = 0;
            drawMode = 0;
            return;

        case 2: // '\002'
            if(!flag || i < 0 || i > 99)
            {
                note = "Vrednosti cvorova mogu da budu od 1 do 99!";
                codePart = 1;
            } else
            {
                note = "Brisemo cvor " + i;
                codePart = 3;
            }
            curIn = 0;
            oldArrow = curInOld;
            curInOld = 0;
            return;

        case 3: // '\003'
            if(treeArray[curIn] == null)
            {
                note = "Ne mogu da pronadjem trazeni cvor!";
                codePart = 1;
                return;
            }
            if(i == treeArray[curIn].getHeight())
            {
                note = "Trazeni cvor je pronadjen!";
                oldArrow = curInOld;
                curInOld = curIn;
                codePart = 4;
                return;
            }
            oldArrow = curInOld;
            curInOld = curIn;
            if(i < treeArray[curIn].getHeight())
            {
                curIn = 2 * curIn + 1;
                note = "Prelazimo na levo dete!";
            } else
            {
                curIn = 2 * curIn + 2;
                note = "Prelazimo na desno dete!";
            }
            codePart = 3;
            if(curIn > 30)
            {
                note = "Ne mogu da pronadjem trazeni cvor!";
                codePart = 1;
                return;
            }
            break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -