Ultima modifica da un moderatore:
C:
#include <stdio.h>
#include <stdlib.h>
struct list{
int val;
struct list* next;
};
int liste_uguali(struct list* ,struct list* );
struct list* inserisciInCoda(struct list*, int);
void visualizza(struct list*);
int main(){
int val;
struct list* lista=NULL;
struct list* lista2=NULL;
printf("inserire valore");
scanf("%d",&val);
while(val!=-1){
lista=inserisciInCoda(lista,val);
printf("inserire valore");
scanf("%d",&val);
}
printf("inserire valore 2");
scanf("%d",&val);
while(val!=-1){
lista2=inserisciInCoda(lista2,val);
printf("inserire valore 2");
scanf("%d",&val);
}
visualizza(lista);
visualizza(lista2);
if(liste_uguali(lista,lista2)==1)
printf("liste uguali");
else
printf("liste diverse");
}
struct list* inserisciInCoda(struct list* l, int num){
struct list *prec;
struct list *tmp;
tmp = (struct list*) malloc(sizeof(struct list));
if(tmp != NULL){
tmp->next = NULL;
tmp->val = num;
if(l == NULL)
l = tmp;
else{
for(prec=l;prec->next!=NULL;prec=prec->next);
prec->next = tmp;
}
} else
printf("Memoria esaurita!\n");
return l;
}
int liste_uguali(struct list* L1,struct list* L2){
if(L1->val==L2->val && L1==NULL && L2==NULL){
return 1;
}
else
if((L1==NULL && L2!=NULL) ||(L2==NULL && L1!=NULL) ||(L1==NULL && L2==NULL && L1->val!=L2->val ))
return 0;
else{
L1=L1->next;
L2=L2->next;
return liste_uguali(L1,L2);
}
}
void visualizza(struct list* l){
while(l!=NULL){
printf("%d",l->val);
l=l->next;
}
}
Messaggio unito automaticamente:
il problema è nella funzione liste uguali con i NULL ma non riesco a capire perchè