Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <assert.h>
- //CANCELLAZIONE IN TESTA, CODA, E IN MEZZO IN UNA LISTA BIDIREZIONALE SENZA SENTINELLA.
- //Supponiamo che la lista sia una lista di interi, creo la struct informazioni che conterra' il valore
- struct informazioni
- {
- int valore;
- };
- typedef struct informazioni informazioni;
- //Creo la struttura per la lista bidirezionale
- struct elemento
- {
- informazioni info;
- struct elemento *prec;
- struct elemento *succ;
- };
- typedef struct elemento elemento;
- typedef elemento *lista;
- lista crea_lista();
- int main()
- {
- }
- lista crea_lista()
- {
- lista appoggio;
- appoggio = NULL;
- return appoggio;
- }
- void cancella_testa(lista testa)
- {
- lista appoggio;
- appoggio = testa;
- //La nuova testa sarà il successivo della vecchia testa
- testa = appoggio->succ;
- //Il precedente della vecchia testa, divenuta adesso la nuova testa, punterà a NULL
- appoggio->succ->prec = NULL;
- //Questo passaggio può essere scritto meglio creando una nuova variabile appoggio
- //ESEMPIO : lista appoggio2; allocazione dinamica di appoggio2; appoggio2 = appoggio->succ; appoggio2->prec = NULL
- //Infatti come l'ho scritto io su alcuni compilatori potrebbe dare problemi pur essendo corretto logicamente
- free(appoggio);
- }
- void cancella_fondo(lista fondo)
- {
- lista appoggio;
- appoggio = fondo;
- fondo = appoggio->prec;
- appoggio->prec->succ = NULL;
- free(appoggio);
- }
- void cancella_mezz(lista testa)
- {
- int el;
- printf("Quale elemento vuoi eliminare ?");
- //L'utente dovrà inserire un numero, ad esempio 4 per eliminare il quarto.
- lista appoggio;
- appoggio = testa;
- int i = 0;
- while(appoggio!=NULL && i<4)
- {
- appoggio = appoggio->succ;
- }
- //Il ciclo si fermerà sull'elemento da eliminare
- //Si possono utilizzare nuovamente altre variabili per semplificare la cosa
- appoggio->succ->prec = appoggio->prec;
- appoggio->prec->succ = appoggio->succ;
- free(appoggio);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement