// Ogni nodo possiede un puntatore all'elemento successivo
// e uno all'elemento precedente. struct nodo {
nodo *precedente; int n;
nodo *prossimo;
};
// Si noti che non viene dichiarato un tipo lista:
// la lista e' identificata da un puntatore a un nodo (la sentinella).
// Inizializzazione della lista, da chiamare obbligatoriamente
// dopo la dichiarazione di una lista concatenata void inizializza (nodo *&L);
// Inserimento nella posizione precedente quella indicata da p void inserisci_dopo (nodo *&L, nodo *p, int n);
// Ricerca di un intero nella lista. Restituisce il puntatore al nodo che lo
// contiene, oppure alla sentinella se non e' presente il valore cercato
nodo *cerca (nodo *&L, int n);
// Inserimento di un intero in una lista ordinata void inserisci_ordinato (nodo *&L, int n);
// Cancellazione dell'elemento cui punta p void cancella (nodo *&L, nodo *p);
// Stampa il contenuto della lista void stampa (nodo *&L);