DIPARTIMENTO DI
INFORMATICA Università di Torino | |
Lezione di Venerdi' 1/2/02 - ultimo aggiornamento: 7/2/02Ancora liste linkate.CHE COSA E' STATO FATTO A LEZIONE
Funzioni sulle liste che non rientrano perfettamente nello "schema generale di visita" presentato la lezione precedenteAltra versione della funzione "findnth" in [NOTE1:pag. 12]. (NOTATE CHE QUESTA VERSIONE E' UNA SPECIALIZZAZIONE DELLO "SCHEMA GENERALE DI VISITA")
/* AI: "lis" e' il puntatore ad una lista L e "occ" contiene N (>=1) AF: Restituisce: - un puntatore al nodo di L che contiene l'"occ"-esima occorrenza di "x", - NULL se un tale nodo non esiste (cioe' se "x" occorre meno di "occ" volte in L) */ node *findnth1 (int x, int occ, node *lis) { node* punt = NULL; /* IC: (Tutti nodi di L dal primo a quello puntato da "lis" escluso contengono N-"occ" occoprrenze di "x") AND (se "punt" != NULL allora "punt" punta all'N-esimo nodo di L che contiene "x") */ while ((lis!=NULL) && (occ != 0)) { if (lis->data == x) { occ--; if (occ == 0) punt=lis; } lis=lis->next; } return punt; }
Altra versione della funzione "findpred" in [NOTE1:pag. 12]. (questa NON e' una specializzazione dello "schema generale di visita", pero' e' "molto simile" ad esso)
/* AI: "lis" e' il puntatore ad una lista L AF: Restituisce: - un puntatore al nodo di L che precede la prima occorrenza di "x", - NULL se un tale nodo non esiste (cioe' se "x" occorre al primo posto in L, o non occorre in L) */ node *findpred1 (int x, node *lis) { if (lis==NULL) return NULL; if (lis->data==x) return NULL; /* IC: Tutti nodi di L dal primo a quello puntato da "lis" incluso non contengono "x" */ while ((lis->next != NULL) && (lis->next->data !=x)) lis=lis->next; if (lis->next!=NULL) return lis; else return NULL; }
Funzioni che modificano su una lista modificandone i linkCOSA SI DEVE LEGGERE
|
Last update: Feb 12, 2002 | |