#include struct mionodo { int valore; struct mionodo * next; }; struct mionodo * head=NULL; void mostra_contenuto_lista() { struct mionodo * scan; scan=head; printf("Contenuto della lista:\n"); while(scan!=NULL) /* while(scan) */ { printf("Il contenuto del nodo e': %d\n",scan->valore); /* traslare avanti di una posizione il puntatore scan */ scan = scan -> next; } printf("Scansione lista terminata!\n"); } void inserisci_in_testa(int val) { struct mionodo * tmp; tmp = (struct mionodo *)malloc(sizeof(struct mionodo)); tmp -> valore = val; tmp -> next = head; head=tmp; } void inserisci_in_coda(int val) { struct mionodo * scan; struct mionodo * tmp; /* puntatore al nuovo nodo */ if(head==NULL){inserisci_in_testa(val);return;} scan = head; while(scan->next!=NULL) /* while(scan->next) */ { scan = scan -> next; } tmp = (struct mionodo *)malloc(sizeof(struct mionodo)); tmp -> valore = val; tmp -> next = NULL; scan -> next = tmp; } void inserisci_in_ordine(int val) { if(val < head->valore) inserisci_in_testa(val); else { struct mionodo * scan; scan = head; /* while(scan->valorenext->valorenext == NULL) break; if(scan->next->valorenext; else break; } /* in che caso mi trovo? */ if(scan-> next!= NULL) { /* caso 1: elemento da inserire in mezzo alla lista */ struct mionodo * tmp; tmp = (struct mionodo *)malloc(sizeof(struct mionodo)); tmp->valore=val; tmp->next = scan->next; scan->next = tmp; } else /* caso 2: elemento da inserire in coda alla lista */ inserisci_in_coda(val); } } int main() { int opzione; int valorenuovo; while(1) { printf("Gestione liste\n"); printf("1.. Visualizza contenuto lista\n"); printf("2.. Inserisci nodo in testa alla lista\n"); printf("3.. Inserisci nodo in coda alla lista\n"); printf("4.. Inserisci nodo in ordine nella lista\n"); scanf("%d",&opzione); switch(opzione) { case 1: mostra_contenuto_lista(); break; case 2: printf("Inserisci il valore per il nuovo nodo:"); scanf("%d",&valorenuovo); inserisci_in_testa(valorenuovo); break; case 3:printf("Inserisci il valore per il nuovo nodo:"); scanf("%d",&valorenuovo); inserisci_in_coda(valorenuovo); break; case 4:printf("Inserisci il valore per il nuovo nodo:"); scanf("%d",&valorenuovo); inserisci_in_ordine(valorenuovo); break; default: printf("scelta non valida!\n"); return; } } }