Precedente :: Successivo |
Autore |
Messaggio |
drag6789019 Comune mortale

Registrato: 21/05/10 18:11 Messaggi: 1
|
Inviato: 21 Mag 2010 18:16 Oggetto: [C] Eliminare un elemento da una lista |
|
|
Ciao a tutti.
Data una lista in C definita come:
Codice: |
typedef struct elem {
int valore;
struct elem * next; /* puntatore al successivo elemento */
} Elem;
typedef Elem * Lista; /* Puntatore all'elemento corrente della lista */
|
devo definire una funzione RICORSIVA che presa in input la lista e un intero
(
prototipo della funzione:
Lista_str elimina(Lista l,int val)
)
se val è uguale al campo valore dell'elemento Elem della lista,lo elimini dalla lista.
(ovviamente sò fare if(val==(Lista->valore)) )
Il mio problema è appunto COME ELIMINARE l'elemento dalla lista con una funzione
RICORSIVA.
La funzione deve essere ricorsiva e la lista NON può essere doppia (anche se sò che
sarebbe molto più semplice).
La funzione "elimina" deve ritornare il puntatore alla testa della lista.
Spero possiate aiutarmi perchè sono "disperato"
ciao e grazie in anticipo[/code] |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11810 Residenza: Tokelau
|
Inviato: 24 Mag 2010 17:37 Oggetto: |
|
|
Chiami la funzione passandogli la testa della lista e il valore da cercare. nella funzione verifichi se l'elemento è quello da cancellare, se no allora chiami dinuovo la funzione, stavolta però passandogli l'elemento next come testa.
Se invece hai trovato l'elemento questo va cancellato e la funzione deve restituire un puntatore all'elemento successivo, per poter ricollegare la lista.
Ovviamente se arrivi ad un NULL devi uscire (ritornare NULL a tutti i chiamanti) perchè l'elemento non è stato trovato. |
|
Top |
|
 |
|
|
Non puoi inserire nuovi argomenti Non puoi rispondere a nessun argomento Non puoi modificare i tuoi messaggi Non puoi cancellare i tuoi messaggi Non puoi votare nei sondaggi
|
|