ovako,napisao sam code u javi…radi se o listi…ali meni sad treba da bude cirkularna…ne mogu povezati head and tail…
znam da je fazon u par linija ali ne znam kako…uradio sam to u c++ ali u javi ne mogu…jer nema pointera…moze li mi ko pomoci
hvala unaprijed…
evo source: (test i element klasa vam ne treba…pretpostavljam )
public class Lista{
private element prvi;
public void Lista(int b){
prvi=new Element(b);
}
public void prazni(){
prvi=null;
}
public int duzina(){
int n=0;
for(element tek=prvi; tek!=null; tek=tek.sljedeci);
n++;
return n;
}
public String toString(){
String s=" “;
for(element tek=prvi; tek!=null; tek=tek.sljedeci);
s+=tek.broj+” ";
return s;
}
public void naPocetak(int b){
prvi=new Element(b, prvi);
}
public void naKraj(int b){
Element novi=new Element(b);
if(prvi==null)
prvi=novi;
else{
Element tek=prvi;
while(tek.sljedeci!=null)
tek=tek.sljedeci;
tek.sljedeci=novi;
}
}
public void umetni(int b){
Element tek=prvi,pret=null;
while(tek!=null && tek.broj<b){
pret=tek;
tek=tek.sljedeci;
}
Element novi=new Element(b, tek);
if(pret==null)prvi=novi;
else pret.sljedeci=novi;
}
public void izostavi(int b){
Element tek=prvi, pret=null;
while(tek!=null)
if(tek.broj!=b){
pret=tek;
tek=tek.sljedeci;
}
else{
tek=tek.sljedeci;
if(pret==null)prvi=tek;
else pret.sljedeci=tek;
}
}
}
Gadan ti taj kod, mogao si da ga stavis pod: code
da se bolje vidi. Elem, ako ti lista ide ukrug, onda ne mozes da koristis onakav toString jer bi upao u beskonacnu petlju. Ako petlja ide u krug onda je ocigledno da nijedan element nece imati svojsvo slijedeci == null. Zato ako vec vrsis iteraciju, kreces od prvog elementa i ides dok opet ne dodjes do njega. To mozes elegantno sa do{}while().
Sve sto trebas da uradis da obicnu takvu listu “zaokruzis” jeste da svaki put kada dodajes novi element (na kraj liste) postavis da je njemu slijedeci element - prvi element u listi.
Ako malo bolje proucis, naci ces da su sve variajble s objektima ustvari kao pointeri na te objekte, osim u slucaju primitivnih tipova (double, int, char, boolan), a ako ti i za njih treba objekat imas klase Double, Integer, Character, Boolean. Uglavnom ako hoces cirkularnu listu prilicno lako to mozes postici sa java.util.LinkedList i napravis objekt kojim ces extend link list i dodas (ne znam jeli override ili ne) fino method next i varijablu da pratis tekuci element i kada dodjes do kraja vratis ga nazad znaci nesto tipa:
int tekuciElement;
if(tekuciElement==super.size() )
tekuciElement=0;
i eto ti cirkularne liste od linkliste imaces add, remove i sve ostale fazone a samo dodas sto tebi jos treba. vise detalja ces naci na java.sun.com pod tutorialima potrazi collections i pogledaj tamo sta sve mozes i sta imas od gotovih stvari (hashmap, linkedlist, stack i sl.)