Ciao a tutti sto cercando di creare e visualizzare due liste il problema solo che il codice che ho sviluppato stampa solo il primo elemento delle due liste e poi dei numeri tipo 9713624 posto il codice
codice:
#include <stdio.h>
#include <malloc.h>
struct elemento{
int val;
struct elemento *succ;
};
struct elemento *crealista();
void visualizza(struct elemento *);
main()
{
struct elemento *puntlista1,*puntlista2;
printf("Inserisci la prima lista:\n\n");
puntlista1=crealista();
printf("\nInserisci la seconda lista:\n\n");
puntlista2=crealista();
printf("\nVisualizzazione prima lista: \n\n");
visualizza(puntlista1);
printf("\nVisualizzazione seconda lista: \n\n");
visualizza(puntlista2);
printf("\nPremi invio per uscire...");
getchar();
getchar();
}
struct elemento *crealista()
{
int i,n;
struct elemento *primo,*corpo;
printf("Quanti valori vuoi inserire?: ");
scanf("%d",&n);
primo=(struct elemento *)malloc(sizeof(struct elemento));
printf("Inserisci il 1%c valore: ",248);
scanf("%d",&primo->val);
corpo=primo;
for(i=2;i<=n;i++){
corpo->succ=(struct elemento *)malloc(sizeof(struct elemento));
corpo=corpo->succ;
printf("Inserisci il %d%c valore: ",i,248);
scanf("%d",&corpo->succ);
}
corpo->succ=NULL;
return(primo);
}
void visualizza(struct elemento *p)
{
while(p!=NULL){
printf("%d --->",p->val);
p=p->succ;
}
printf("NULL\n\n");
}
Esempio:
inserisco la lunghezza della prima lista : 3
inserisco gli elementi 5 , 4 , 2
inserisco la lunghezza della seconda lista: 4
inserisco gli elementi: 1 , 3 , 6 , 8
Stampa questo:
Prima lista: 5---> 9713624---> 9713624---> NULL
Seconda lista: 1---> 9713624---> 9713624---> 9713624--->NULL
Come posso fare per risolvere il problema??
Grazie per l'aiuto.