Salve ho creato un programma sulle liste, che presa in input una lista di interi aggiunge in coda alla lista un nuovo elemento con valore nel campo val pari alla somma dei valori degli ultimi 2 elementi della lista.
Il programma a parer mio è corretto, ma nn capisco perchè se lo faccio partire in debug questo funziona invece con il normale esegui nn va. Uso il programma dev-c++ versione 4.9.9.2.
Vi posto anche il codice del programma help
Codice:#include <stdio.h> #include <stdlib.h> #include <conio.h> #define max 3 typedef struct elem { int val; struct elem *next; } elem, *list; void fiblist(list l) { printf("Entro nella funzione \n"); elem *new1=malloc (sizeof(elem)); elem *first=l; elem *current=first; elem *prec=first; if (current==NULL) exit(1); else current=current->next; if (current==NULL) exit(1); else { current=current->next; prec=prec->next; } while (current->next!=NULL) { current=current->next; prec=prec->next; } new1->val=(current->val)+(prec->val); current->next=new1; } int main() { elem *new2=malloc (sizeof(elem)); elem *first=NULL; int i; for(i=0;i<max;i++) { new2=malloc (sizeof(elem)); new2->next=first; first=new2; } elem *current=first; while(current!=NULL) { printf("Inserire il valore: \n"); scanf("%d",¤t->val); current=current->next; } fiblist(first); current=first; printf("Esco dalla funzione\n"); while(current->next!=NULL) { printf("%d ",current->val); current=current->next; } current=first; while(current!=NULL) { current=current->next; free(first); first=current; } getch(); return 0; }



Rispondi Citando



