17/09/11 9:16
flavio89
Salve ragazzi. Ho scritto un codice per l'inserimento in testa in una lista generica.
Non è tutta farina del mio sacco, visto che buona parte del codice l'ho trovata in rete.
All' esecuzione (non ho nè error nè warning), inserisco il dato, ma subito dopo, quando richiamo la stampa, mi viene mostrato un solo elemento alla volta (quindi deduco che sovrascriva) e oltretutto è sempre -1;
Non capisco quindi se l'errore è da ricercarsi nella stampa o nell' inserimento stesso.
A voi che siete sicuramente più esperti di me, chiedo di spiegarmi quale possa essere il problema, se appunto sia la stampa o l'inserimento.
Grazie anticipatamente
Non è tutta farina del mio sacco, visto che buona parte del codice l'ho trovata in rete.
All' esecuzione (non ho nè error nè warning), inserisco il dato, ma subito dopo, quando richiamo la stampa, mi viene mostrato un solo elemento alla volta (quindi deduco che sovrascriva) e oltretutto è sempre -1;
Non capisco quindi se l'errore è da ricercarsi nella stampa o nell' inserimento stesso.
#include <stdio.h> #include <stdlib.h> typedef struct elem { struct elem* next; void* key; } elem; elem* ins (elem*,void*,void*(*copia)(void*)); void* copia (void*); elem* crea (); void stampa (elem*); main (){ void* n; elem* head; //head = crea(); while (1) { printf ("Numero : "); int insert; scanf ("%d",&insert); n = &insert; *(int*) n = insert; ins (head,n,copia); stampa (head); system ("pause"); } puts(""); system ("pause"); } elem* ins (elem* head,void* k,void*(*copia)(void*)) { elem* temp; temp = malloc(sizeof(elem)); temp->next = head; temp->key = copia (k); return temp; } void* copia (void* a) { int* temp; if ((temp = malloc(sizeof(int))) == NULL) return NULL; *temp = *(int*) a; return (void*) temp; } elem* crea () { elem* temp; temp = NULL; return temp; } void stampa (elem* head) { elem* cur; cur = head; while (cur != NULL) { int t = cur->key; printf ("%d\n",t); cur = cur->next; } }
A voi che siete sicuramente più esperti di me, chiedo di spiegarmi quale possa essere il problema, se appunto sia la stampa o l'inserimento.
Grazie anticipatamente
aaa