Salve, ho un problema con la stampa di una lista.
Ho questo codice per la struttura di una lista:
codice:
struct SNode{
int info;
struct SNode *link;
};
typedef struct SNode TNode;
typedef TNode *TList;
Queste invece sono le funzioni:
codice:
TNode *crea_nodo(int info);
void distruggiNodo(TNode *n);
TList crea_lista();
TList distruggi_lista(TList n);
void stampaLista(TList L);
TList inserisciNodo(TList l, int info);
int main(){
int i, num;
TList l=crea_lista();
for(i=0;i<3;i++){
printf("insrisci valor: ");
scanf("%d", &num);
inserisciNodo(l, num);
}
stampaLista(l);
distruggi_lista(l);
return 0;
}
TNode *crea_nodo(int info){
TNode *n;
n=(TNode *)malloc(sizeof(TNode)*1);
n->info = info;
n->link = NULL;
return n;
}
void distruggiNodo(TNode *n){
free(n);
}
TList crea_lista(){
return NULL;
}
TList distruggi_lista(TList l){
TNode *n;
TNode *m;
n=l;
while(n!=NULL){
m=n->link;
distruggiNodo(n);
n=m;
}
return NULL;
}
void stampaLista(TList L){
TNode *n;
n=L;
while(n!=NULL){
printf("%d ", n->info);
n=n->link;
}
}
TList inserisciNodo(TList l, int info){
TNode *p, *s, *n;
p=NULL;
s=l;
//F1 RICERCA POSIZIONE
while(s!=NULL && info>s->info){
p=s;
s=s->link;
}
//F2 ALLOCAZIONE
n=crea_nodo(info);
if(p==NULL){
n->link=l;
return n;
}else{
n->link = s;
p->link = n;
return l;
}
}
La lista risulta NULL anche dopo l'inserimento dei nodi. Come devo fare?