

C - Spajany zoznam struktur mazanie
Dobry den prajem. Mam problemy so strukturami. Chapem zaklady spajaneh zoznamu ako ukazuju jednotlive struktury v zozname na druhe a tak ale neviem prijst nato ako zmazat dajme tomu v 8prvkovom zozname stuktur strukturu na 5. mieste napadlo ma ze ked dojdem na piatu tak ta stvrta bude ukazovat namiesto piatej na siestu a piatu vymazem. Bohuzial neviem ako to funguje ci pri mazani sa dava free alebo ako priradim tej stvrtej adresu siestej atd. Neukazal by mi dakto priklad ako sa to robi?
Musim to robit cez temp? Tuto mam jeden priklad:
Pocet je kolko struktur bolo prejdenych dokial som nenarazil na tu ktoru chcem zmazat. No a v tomto kode sa dostanem na strukturu pred tu ktoru chcem vymazat a podarilo sa mi tu adresu aj zmenit a preskocit ju ale neviem vymazat tu strukturu co som preskocil
a tie smerniky aktualnyZaznam a prvyZaznam som alokoval cez malloc
struktura* neco;
neco = aktualnyZaznam->dalsia;
aktualnyZaznam->dalsia = neco->dalsia;
free(neco);
Este jedna otazocka co ak chcem zmazat uplne prvu strukturu to nemozem iba vymazat to musim poposuvat cely zoznam ze?
Ak to robis vo funkcii a predavas to prvyZaznam parametrom, tak to ale neovplyvni origijnalnu premennu. Potom si musis predavat to prvyZaznam do funkcie odkazom (adresu toho prvyZaznam, t.j. dvojity pointer).
funkcia(struktura **prvyZaznam)
{
aktualnyZaznam = *prvyZaznam;
for(i=0...
a ked chces zmazat ten prvy tak potom
neco = *prvyZaznam;
*prvyZaznam = neco->dalsi;
free(neco)
}
a volas to potom ako
funkcia(&prvyZaznam);
tak ovplyvnis premennu prvyZaznam vnutri funkcie (ak si ju pamatas mimo tej fukcie)
Ahaaaa jasne chapem super dakujem moc :)