Ciao a tutti ragazzi, come da titolo il mio problema riguarda la somma tra liste. Il programma parte però mi si blocca al momento della visualizzazione della lista somma..e non capisco perché! Forse ho sbagliato i parametri attuali della funzione? Mi potreste aiutare? (grazie in anticipo )
Il codice è questo:
codice:
#include <stdio.h>
#include <stdlib.h>
typedef struct Lista {
int info;
struct Lista *next;
} Nodo;
Nodo *crea();
void Visualizza(Nodo*);
Nodo* SommaListe(Nodo *p1,Nodo *p2);
int main() {
Nodo *pun1,*pun2, *pun3;
pun1=crea();
Visualizza(pun1);
pun2=crea();
Visualizza(pun2);
/*Invocazione della funzione per la somma delle liste*/
pun3= SommaListe(pun1,pun2);
Visualizza(pun3);
}
Nodo *crea() {
Nodo *p, *paux;
int i,n;
printf("Da quanti elementi e' composta la lista?");
scanf("%d", &n);
if(n==0)
p=NULL;
else {
p=(Nodo*)malloc(sizeof(Nodo));
printf("Inserisci la 1a informazione: ");
scanf("%d", &p->info);
paux=p;
for(i=2; i<=n; i++) {
paux->next=(Nodo*)malloc(sizeof(Nodo));
paux=paux->next;
printf("Inserire la %da informazione: ",i);
scanf("%d", &paux->info);
}
paux->next=NULL;
}
return(p);
}
void Visualizza(Nodo *p) {
if(p!=NULL) {
printf("--->");
printf("%d", p->info);
Visualizza(p->next);
}
else
printf("NULL\n");
}
Nodo* SommaListe(Nodo *p1,Nodo *p2) {
Nodo *p3=NULL, *paux3;
if(p1!=NULL && p2!=NULL) {
p3=(Nodo*)malloc(sizeof(Nodo));
p3->info=p1->info+p2->info;
paux3=p3;
p1->next;
p2->next;
for(; p1!=NULL && p2!=NULL; ) {
paux3->next=(Nodo*)malloc(sizeof(Nodo));
paux3=paux3->next;
paux3->info=p1->info+p2->info;
p1->next;
p2->next;
}
paux3->next=NULL;
}
return(p3);
}