📄 persongroup.java
字号:
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 + -