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.
Grazie mille! Ora funziona perfettamente!