Ciao! Ho un problemino con questo programma, praticamente dovrebbe creare una lista dinamica ed eliminare poi tutti i valori inferiori ad un certo numero che specifico dalla lista. Solo che va in crash quando raggiunge l'ultimo numero della listaCome mai?
grazie millecodice:#include <stdio.h> #include <stdlib.h> void crealista(); void visualizzalista(); int eliminanumero(int dato); struct elenco { int numero; struct elenco *pun; }; int i,n; struct elenco *p,*paux, *paux2; main() { int val,i; crealista(); printf("Quale e' il numero al di sotto del quale vuoi eliminare i numeri piu piccoli?: "); scanf("%i",&val); while (i != 0) { i = eliminanumero(val); } visualizzalista(); } void crealista() { printf("Inserisci la quantita' dei numeri da inserire: "); scanf("%i",&n); if (n==0) p = NULL; else { p = (struct elenco *)malloc(sizeof(struct elenco)); printf("\nInserisci il valore: "); scanf("%i",&p->numero); paux = p; for (i=1;i<=n-1;i++) { paux->pun = (struct elenco *)malloc(sizeof(struct elenco)); paux = paux->pun; printf("\nInserisci il valore: "); scanf("%i",&paux->numero); if (i==n-1) paux->pun = NULL; } } } int eliminanumero(int dato) { paux = p; while (paux != NULL) { if (paux == p && paux->numero < dato) { p = paux->pun; free(paux); return 1; } else if (paux->pun->numero < dato) { paux->pun = paux->pun->pun; paux2 = paux->pun; free(paux2); return 1; } paux = paux->pun; } return 0; } void visualizzalista() { system("cls"); paux = p; while (paux != NULL) { printf("%i\n",paux->numero); paux = paux->pun; } }![]()

Come mai?
Rispondi quotando
