Raga mi sapete dire gli errori presenti nelle funzioni inseriscitesta e inseriscicoda? Vorrei imparare ad utilizzare il typedef (prima questo programma l'avevo scritto con i puntatori e funzionava alla perfezione) ma mi sfugge qualcosa... grazie in anticipo.
codice:#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct numeri *nodo; struct numeri{ int elemento; nodo succ; }; void inseriscitesta(nodo il); void stampalista (nodo il); void inseriscicoda(nodo il); void distruggilista(nodo il); void ricerca(nodo il, int z); void cancellanodo(nodo il, int l); void inserimentoordinato(nodo il); int main(int argc, char *argv[]) { int y; nodo il=NULL; il= malloc (sizeof (struct numeri)); il->succ=NULL; printf ("Digita 1 per inserire un numero, altrimenti digita 0\n"); scanf ("%d", &y); if (y==1) {printf ("Inserisci il nuemero:\n"); scanf ("%d", &il->elemento);} inseriscitesta(il); stampalista (il); distruggilista (il); inserimentoordinato(il); stampalista(il); distruggilista (il); inseriscicoda (il); stampalista (il); int l; printf ("Inserisci il numero da cancellare\n"); scanf ("%d", &l); cancellanodo (il, l); stampalista (il); inseriscicoda (il); int z; printf ("Inserisci il numero da cercare\n"); scanf ("%d", &z); ricerca (il, z); system("PAUSE"); return 0; } void inseriscitesta(nodo il){ int y; printf ("Digita 1 per inserire un numero, altrimenti digita 0\n"); scanf ("%d",&y); while (y==1) { nodo p2 = NULL; p2= malloc (sizeof(struct numeri)); p2->succ=NULL; printf ("Digita il numero da inserire:\n"); scanf ("%d", &p2->elemento); p2->succ = il; il = p2; printf ("Digita 1 per inserire un numero, altrimenti digita 0\n"); scanf ("%d",&y);}} void stampalista (nodo il){ while ( il!=NULL) { printf ("%d ---->", il->elemento); il=il->succ;}} void inseriscicoda(nodo il){ int m; printf ("\nDigita 1 per inserire un numero, altrimenti digita 0\n"); scanf ("%d",&m); while (m==1) { if (il==NULL){ nodo p2 = NULL; p2= malloc (sizeof(struct numeri)); p2->succ=NULL; printf ("Digita il numero da inserire:\n"); scanf ("%d", &p2->elemento); p2->succ = il; il = p2;} else { nodo tm= il; while (tm->succ!=NULL) tm = tm->succ; nodo nuovo= malloc(sizeof(struct numeri)); printf("Digita il numero\n"); scanf("%d", &nuovo->elemento); nuovo->succ=NULL; tm->succ=nuovo;} printf ("Digita 1 per inserire un numero, altrimenti digita 0\n"); scanf ("%d",&m);}} void distruggilista(nodo il){ nodo tmp = NULL; while (il != NULL) { tmp= il->succ; free (il); il=tmp;}} void ricerca (nodo il, int z){ while (il != NULL && z!=il->elemento) il=il->succ; if (il->elemento==z) printf ("Il numero e' stato trovato\n"); else printf ("Il numero non e' stato trovato\n");} void cancellanodo (nodo il, int l){ nodo nodoprecedente; nodo nodocorrente; nodo nodotemporaneo; if (il->elemento == l){ nodotemporaneo = il; il = il->succ; free (nodotemporaneo);} else{ nodoprecedente = NULL; nodocorrente = il; while(nodocorrente != NULL && nodocorrente->elemento != l){ nodoprecedente = nodocorrente; nodocorrente = nodocorrente->succ;} if (nodocorrente != NULL) { nodotemporaneo = nodocorrente; nodoprecedente->succ = nodocorrente->succ; free (nodotemporaneo); }}} void inserimentoordinato (nodo il){ nodo nodoprecedente; nodo nodocorrente; nodo nuovonodo; int h; printf ("Digita 1 per inserire un numero o 0 per terminare\n"); scanf ("%d", &h); while (h==1){ int u; nuovonodo = malloc(sizeof(struct numeri)); printf ("Digita il numero da inserire\n"); scanf ("%d",&u); nuovonodo->elemento=u; nodoprecedente=NULL; nodocorrente=il; while(nodocorrente!=NULL && u > nodocorrente->elemento){ nodoprecedente=nodocorrente; nodocorrente=nodocorrente->succ;} if (nodoprecedente == NULL){ nuovonodo->succ = il; il=nuovonodo;} else { nodoprecedente->succ=nuovonodo; nuovonodo->succ=nodocorrente;} printf ("Digita 1 per inserire un numero o 0 per terminare\n"); scanf ("%d", &h);}}

Rispondi quotando
