Page 525 - Informatica dalla A a Z
P. 525
/* inserimento in coda (ricorsivo) */
void InserisciInCodaR(Lista *lp, ElmLista *elp) {
if (*lp == NULL) {
*lp = elp; /* fine della lista */
elp->next = NULL;
}
else {
InserisciInCodaR(&(*lp)->next, elp);
}
}
/* inserimento in ordine (si suppone la lista in ordine cre-
scente) */
void InserisciInOrdine(Lista *lp, ElmLista *elp) {
ElmLista *elementoCorrente, *elementoPrecedente;
elementoCorrente = *lp;
elementoPrecedente = NULL;
while (elementoCorrente != NULL &&
elementoCorrente->Info < elp->Info) {
elementoPrecedente = elementoCorrente;
elementoCorrente = elementoCorrente->next;
}
}
elp->next = elementoCorrente;
if (elementoPrecedente != NULL)
elementoPrecedente->next = elp; /* caso di lista non vuota
*/
else *lp = elp;
}
/* il primo elemento (se esiste) viene tolto e ritornato il pun-
tatore */
ElmLista *TogliDaTesta(Lista *lp) {
ElmLista *elementoCorrente;
elementoCorrente = *lp;
if (elementoCorrente != NULL)
*lp = elementoCorrente->next;
return elementoCorrente;
}
521