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)
codice:
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;
}
}
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 testa !!
Chi sa aiutare un povero disgraziato..
Ciao e grazie in anticipo