Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[C] Eliminare un elemento da una lista
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
drag6789019
Comune mortale
Comune mortale


Registrato: 21/05/10 18:11
Messaggi: 1

MessaggioInviato: 21 Mag 2010 18:16    Oggetto: [C] Eliminare un elemento da una lista Rispondi citando

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" Smile
ciao e grazie in anticipo[/code]
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 12:16
Messaggi: 11810
Residenza: Tokelau

MessaggioInviato: 24 Mag 2010 17:37    Oggetto: Rispondi

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
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
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