Creare e stampare lista in c

di il
6 risposte

Creare e stampare lista in c

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 :/

6 Risposte

  • Re: Creare e stampare lista in c

    Occhio a come hai scritto queste


    if (v=0)
    head==NULL;
  • Re: Creare e stampare lista in c

    Uh okay, ricontrollo, grazie mille ^-^
  • Re: Creare e stampare lista in c

    Un principiante non dovrebbe iniziare dalle liste
    
    p=p->next;
    
    L'assegnazione è da sinistra a destra: quanto vale p->next?
    Che poi il p->next da aggiornare è quello del nodo precedente. Guardati bene gli esempi che ci sono anche nel forum
  • Re: Creare e stampare lista in c

    oregon ha scritto:


    Occhio a come hai scritto queste


    if (v=0)
    head==NULL;
    non capisco cosa ci sia di sbagliato qua, non mi rende la lista che sto creando una lista vuota?
    Un principiante non dovrebbe iniziare dalle liste
    p=p->next;
    L'assegnazione è da sinistra a destra: quanto vale p->next?
    Che poi il p->next da aggiornare è quello del nodo precedente. Guardati bene gli esempi che ci sono anche nel forum
    Così invece sarebbe giusto?
    liste crea_lista ()
    {
    	elem_lista *p, *head;
    	int v;
    	
    	v= chiedi_valore ();
    	p=malloc (sizeof(elem_lista));
    	p->info=v;
    	p->next=NULL;	
    	head = p;
    	while (v!=0)
    	{
    		v= chiedi_valore ();
    		p->next=malloc (sizeof(elem_lista));
    		p=p->next;
    		p->info=v;
    		p->next=NULL;
    	}
    	
    	if (v=0)
    	head==NULL;
    
    	return head;
    }
  • Re: Creare e stampare lista in c

    oregon ha scritto:


    Occhio a come hai scritto queste


    if (v=0)
    head==NULL;
    Continuavo a rileggere queste due righe restando cieca al mio errore, grazie XD
  • Re: Creare e stampare lista in c

    Continuavo a rileggere queste due righe restando cieca al mio errore, grazie XD
    Ripassa la sintassi del C
Devi accedere o registrarti per scrivere nel forum
6 risposte