Sono entrata nel mondo della programmazione da veramente pochissimo tempo e sto cercando di allenarmi con degli esercizi sulle liste per cercare di capire bene come gestirle, però a quanto pare ci sono ancora molti punti che mi rimangono oscuri, visto che ho cercato di scrivere questo programma che creasse una lista con i valori presi da tastiera, terminata da 0, e che poi li stampasse a video.
Tuttavia, il programma non funziona come vorrei e, sinceramente, non capisco dove siano i miei errori, qualcuno me lo potrebbe spiegare, per favore?
#include <stdio.h>
#include <stdlib.h>
typedef struct EL {
int info;
struct EL *next;
} elem_lista;
typedef elem_lista *liste;
liste testa;
int chiedi_valore ();
liste crea_lista ();
void stampa_lista (elem_lista *head);
int main ()
{
testa = crea_lista ();
stampa_lista (testa);
return 0;
}
int chiedi_valore ()
{
int n;
printf ("INSERIRE NUMERO INTERO");
scanf ("%d", &n);
return n;
}
liste crea_lista ()
{
elem_lista *p, *head;
int v;
v= chiedi_valore ();
p=malloc (sizeof(elem_lista));
p->info=v;
head = p;
p=p->next;
while (v!=0)
{
v= chiedi_valore ();
p=malloc (sizeof(elem_lista));
p->info=v;
p=p->next;
}
if (v=0)
head==NULL;
return head;
}
void stampa_lista (liste lista)
{
liste p;
if (lista==NULL)
printf ("LISTA VUOTA\n");
for (p=lista; p; p=p->next)
printf ("%d ", p->next);
}
So che per molti di voi risulterà un esercizio stupido, ma io sono davvero agli inizi e mi serve per capire come si fa, quindi per favore trattatemi da principiante, quale sono :/