Eh lo so che a livello logico non ha senso, purtroppo anche il prof non ha senso logico![]()
Questo è il programma che ho fatto, ma mi da lista vuota sia per lPositivi che per lNegativi:
sapreste dirmi dove può essere l'errore?codice:#include<stdio.h> #include<stdlib.h> typedef struct nd{ int val; struct nd *next; }TLISTA; TLISTA *newLista(); TLISTA *addLista(TLISTA *lista, int num); void printLista(TLISTA *lista); void dividi(TLISTA *lista, TLISTA *lPositivi, TLISTA *lNegativi); int main() { TLISTA *lInt; TLISTA *lPositivi; TLISTA *lNegativi; FILE *fp; int num; lInt=newLista(); lPositivi=newLista(); lNegativi=newLista(); fp=fopen("dati.txt", "r"); while(fscanf(fp, "%d", &num)!=EOF){ lInt=addLista(lInt, num); } fclose(fp); printf("\n Lista 'lInt':\n\n"); printLista(lInt); printf("\n\n Lista 'lPositivi':\n\n"); dividi(lInt, lPositivi, lNegativi); printLista(lPositivi); printf("\n\n Lista 'lNegativi':\n\n"); printLista(lNegativi); printf("\n\n"); system("PAUSE"); return 0; } TLISTA *newLista(){ return NULL; } TLISTA *addLista(TLISTA *lista, int num){ TLISTA *t; TLISTA *i; t=(TLISTA *)malloc(sizeof(TLISTA)); if(t==NULL){ printf("Errore di memoria!\n"); exit(-1); } else{ t->val=num; t->next=NULL; } i=lista; if(lista==NULL){ return t; } else{ while(i->next!=NULL){ i=i->next; } i->next=t; return lista; } } void printLista(TLISTA *lista){ if(lista==NULL){ printf("lista vuota!\n"); } else{ while(lista!=NULL){ printf("%4d", lista->val); lista=lista->next; } } } void dividi(TLISTA *lista, TLISTA *lPositivi, TLISTA *lNegativi){ TLISTA *temp; temp=lista; while(temp!=NULL){ if(temp->val>=0){ lPositivi=addLista(lPositivi, temp->val); } else{ lNegativi=addLista(lNegativi, temp->val); } temp=temp->next; } }

Rispondi quotando