Liste c
Salve a tutti!
Ho un problema con la costruzione di una lista in c.
Il problema è che non riesco a collegare gli elementi.
Non chiedo che mi completiate il programma, ma solo qualche aiuto!
Ecco qua il codice scritto:
Grazie!
Ho un problema con la costruzione di una lista in c.
Il problema è che non riesco a collegare gli elementi.
Non chiedo che mi completiate il programma, ma solo qualche aiuto!
Ecco qua il codice scritto:
#include <stdio.h> #include <stdlib.h> typedef struct dati { int codice; struct dati *succ; }dati; void InsTesta(int num, dati *p) { dati *id; id=NULL; id=(struct dati *) malloc(sizeof(struct dati)); id->codice=num; id->succ=p; p=id; //Nuovo inizio della lista. printf("Allocato\n\n"); } void stampa(struct dati *p) { int i=0; while (p!=NULL) { printf(" %d\n", p->codice); i++; p=p->succ; } printf("\nStampato/i %d elemento/i\n", i); } int main(int argc, char *argv[]) { dati *lista; lista=NULL; int g=45; InsTesta(g, lista); InsTesta(12, lista); stampa(lista); system("PAUSE"); return 0; }
Grazie!

Risposte
void InsTesta(int num, dati *p) { dati *id; id=NULL; id=(struct dati *) malloc(sizeof(struct dati)); id->codice=num; id->succ=p; p=id; //Nuovo inizio della lista. printf("Allocato\n\n"); }
In questo codice non stai modificando la lista ma solo il parametro locale p. Per poter modificare il puntatore che hai passato devi usare un puntatore a puntatore come nel codice che segue:
void InsTesta(int num, dati **p) { dati *id; id = malloc(sizeof(dati)); id->codice = num; id->succ = *p; *p = id; //Nuovo inizio della lista. printf("Allocato\n\n"); }
In questo modo dovrebbe funzionare.
