Il problema è che quando arrivo a visualizzare gli elementi, mi viene visualizzato solamente il primo nodo della lista.... Potete aiutarmi?
- Codice: Seleziona tutto
#include<stdio.h>
#include<stdlib.h>
/****Definisco la struttura del nodo*******/
typedef struct nodo{
char nome[20];
int matricola;
struct nodo *prox;
};
/******Prototipi funzioni*************/
nodo *crea_lista();
void visualizza_lista(nodo *);
/**************Main del programma********/
main()
{
nodo *testa=NULL;
int menu=0;
while(1){
printf("\n\n 1 - Crea lista\n");
printf(" 2 - Visualizza lista\n");
printf(" 0 - Esci dal Programma\n ");
scanf("%d",&menu);
switch(menu){
case(1):
system("CLS");
testa=crea_lista();
break;
case(2):
system("CLS");
visualizza_lista(testa);
break;
case(0):
return 0;
break;
default:
printf("\n\t\t\t****Scelta non valida***");
}
printf("\n\n");
system("PAUSE");
system("CLS");
}
}
/********Definizione funzioni*****/
nodo *crea_lista()
{
nodo *testa=NULL, *paus=NULL;
//Crea primo elemento e inserimento dati
testa=(nodo *)malloc(sizeof(nodo));
if (testa==NULL) return(NULL);
printf("Inserisci il nome ");
scanf("%s",testa->nome);
printf("Inserisci la matricola ");
scanf("%d",&testa->matricola);
testa->prox=NULL;
paus=testa;
while(1){
char scelta;
printf("\nVuoi inserire altri elementi? (s/n) ");
scanf("%s",&scelta);
if (scelta=='n') {
break;
}
//Creazione nodi successivi
else if(scelta=='s'){
paus->prox=(nodo *)malloc(sizeof(nodo));
if(paus->prox==NULL){
printf("\n\n\t****Memoria esaurita**\n\n");
return(testa);
}
paus=paus->prox;
printf("\nInserisci il nome ");
scanf("%s",paus->nome);
printf("Inserisci la matricola ");
scanf("%d",&paus->matricola);
paus->prox=NULL;
}
else{
printf("\n\t\t\t****Scelta non valida***\n");
continue;
}
}
return(testa);
}
void visualizza_lista(nodo *testa)
{
nodo *paus;
if(testa==NULL){
printf("\n\n\t****Lista vuota****\n\n");
}
else{
paus=testa;
int contatore=1;
while(paus!=NULL){
printf("\n%d elemento\n\n",contatore);
//printf(" %s\n",paus->nome);
printf(" %d",paus->matricola);
paus=paus->prox;
contatore++;
system("pause");
}
}
}