[ BoLa @ 23.11.2004. 10:08 ] @
Pozdrav, pravim jednostruku listu. Sve je ok, ali ne mogu da napravim funkciju za brisanje elementa iz jednostruke liste. U biti, funkcija treba da radi sljedece: void UkloniElemenat(JCVOR **pocetak,int id_elementa) - ukoni elemenat sa zadanim IDom. Znam da da trebam gledati sljedeci elemenat i zatim ako je on jedank trazenom IDu postaviti da pokazuje na sljedeci->sljedeci ali nikako ne mogu to da napravim a da se program ne obori. PLEASE HELP! Evo sta sam do sada napisao: U funkciji UkloniElemenat znam da mora biti jos i specijalni slucaj ako ima samo jedan cvor, ali ne razumjem kako odraditi ovo kada ih ima vise. Code: typedef struct cvor { int data; struct cvor *sljedeci; } JCVOR; JCVOR *glava = NULL; void DodajElement(JCVOR **pocetak,int vrijednost); void UkloniElemenat(JCVOR **pocetak,int id_elementa); void main( void ) { JCVOR *curr; DodajElement(&glava,10); DodajElement(&glava,20); DodajElement(&glava,30); for (curr = glava;curr!=NULL; curr=curr->sljedeci) { //printf("%d",curr->data); } UkloniElemenat(&glava,20); } void DodajElement(JCVOR **pocetak,int vrijednost) { JCVOR *NoviCvor; if ( (NoviCvor = (JCVOR *)malloc( sizeof( JCVOR ) )) == NULL ) { printf( "Neuspjela alokacija memorije! "); } else { NoviCvor->data = vrijednost; NoviCvor->sljedeci = *pocetak; *pocetak = NoviCvor; } } void UkloniElemenat(JCVOR **pocetak,int id_elementa) { JCVOR *trenutni; for (trenutni = *pocetak; trenutni->sljedeci !=NULL; trenutni=trenutni->sljedeci) { if ( trenutni->sljedeci->data == id_elementa) { trenutni = trenutni->sljedeci->sljedeci; free(trenutni->sljedeci); } } } PLEASE HELP. Sve ostale potrebne funkcije sam nasao u odlicnim tutorialima, jedino mi ova fali. Imam Pop ali ona ne zadovoljava, jer brise samo sa pocetka stack-a. |