Hogy építsen fel a fésűs lista fogát?
void list(tanulo* fej, osztaly* ptr){
osztaly* segedpointer;
tanulo* masiksegedpointer;
for(segedpointer=ptr; segedpointer!=NULL; segedpointer=segedpointer->next){
if(strcmp(segedpointer->nev,fej->osztaly)==0){
masiksegedpointer=segedpointer->head;
segedpointer->head=fej;
fej->next=masiksegedpointer;
if (fej->next == fej)
fej->next=NULL
break;
}
}
}
Tehát tanulókat akarok a megfelelő osztályokhoz láncolni. Végigmegyek a láncolt listán, és a megfelelőhöz fűzöm hozzá. Az if-es kitétel az azért van, mert ha még csak az első elemet fűzöm oda, akkor a masiksegedpointer az saját maga a tanulónak, és végtelen ciklus alakulna ki bejáráskor, nem lenne vége.
És ez nem jó. Bejáráskor (for) az van, hogy minden osztályhoz ugyanazt az 1 tanulót láncolja, akit utolsóként olvastatok be egy fájlból. Minden más jó, csak ez nem, és nem tudom hogy esetleg hogyan lehetne másképp láncolni.
Az osztálynak van nextje, az maga a fésűs lista gerince, a foga pedig a headje egy osztálynak és ahhoz lanoclodnak a tanulok, akiknek szintúgy van nextje.
Tehát mi ebben a probléma, ha minden más jó ezen kívül?
A mainben annyi történik, hogy ennek a listának paraméterkent átadom a tanuló memóriacímét, és a már meglévő lista kezdőcímét.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!