PDA

Visualizza la versione completa : Stampa lista non funziona


goatboy
06-02-2015, 11:57
Salve, ho un problema con la stampa di una lista.

Ho questo codice per la struttura di una lista:


struct SNode{
int info;
struct SNode *link;


};
typedef struct SNode TNode;
typedef TNode *TList;


Queste invece sono le funzioni:


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?

oregon
06-02-2015, 13:03
Non ho visto il codice ma, secondo te il problema č nella stampa (come hai indicato nel titolo) o nell'inserimento (come sembra dici nel testo)?

goatboy
06-02-2015, 13:25
La stampa non fa visualizzare nulla. Con una stampa di prova nel main ho notato che la lista risulta sempre NULL. Il codice perņ mi sembra giusto.

oregon
06-02-2015, 13:59
Forse il problema sta nella riga

inserisciNodo(l, num);

che dovrebbe essere

l=inserisciNodo(l, num);

Loading