O voi forumisti dalle ampie conoscenze saprete risolvere il seguente arcano (sarà sicuramente un errore del c@##o ma non ci cavo un ragno dal buco)
Il mio problema è l'iserimento ordinato in una lista doppia. Ho da poco "scoperto" il mondo delle liste e quando si tratta di inserire valori in liste che puntano solo all'allocazione successiva non ci sono problemi! L'errore si genera in esecuzione e aprendo il debug mi dice che è "Access violation"!! Non so più dove sbattere la testacodice:typedef struct cella * LIST; struct cella{ int cont; LIST succ; LIST prec; }; void inser_dup(int x, LIST * punLL); void print (LIST LL); void main(){ LIST L=NULL; int val=0; while(val != 10000){ printf("\nInserisci un valore nella lista. 10000 per uscire\n"); scanf("%d", &val); if (val!=10000) inser_dup(val, &L); } print(L); } void inser_dup(int x, LIST * punLL){ LIST aux, scorri=NULL; aux = (LIST) calloc (1, sizeof (struct cella)); aux->cont = x; if((* punLL == NULL) || x < (* punLL)->cont){ aux->prec=NULL; aux->succ = * punLL; (* punLL)->prec = aux;//acces violation } else{ scorri = * punLL; while((scorri != NULL) && (scorri->cont < x)){ scorri = scorri->succ; } (scorri->prec)->succ = aux; aux->prec = scorri->prec; scorri->prec = aux; aux->succ = scorri; } }!!
Chi sa aiutare un povero disgraziato..![]()
Ciao e grazie in anticipo![]()

!!
Rispondi quotando
