PDA

Visualizza la versione completa : [C] Passare una lista per riferimento


Metalmino
04-07-2012, 19:23
Vi espongo il problema: vedendo il codice, se non creo la funzione e scrivo tutto nel main la lista funziona alla perfezione. Altrimenti, con la funzione "inseriscitesta" mi memorizza solo il primo valore in lista (quello dell'if), probabilmente perchè non passo la lista per riferimento. Quindi come potrei risolvere? Grazie in anticipo.



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct numeri{
int elemento;
struct numeri *succ;
};

void inseriscitesta(struct numeri* il);
void stampalista (struct numeri* il);
int main(int argc, char *argv[])
{
int y;
struct numeri* il=NULL;
il= malloc (sizeof (struct numeri));
il->succ=NULL;
printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
scanf ("%d", &y);
if (y==1)
{printf ("Inserisci il nuemero:\n");
scanf ("%d", &il->elemento);}

inseriscitesta(il);



while ( il!=NULL)
{
printf ("%d ---->", il->elemento);
il=il->succ;}

system("PAUSE");
return 0;
}

void inseriscitesta(struct numeri* il)
{
int m;
printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
scanf ("%d",&m);
while (m==1)
{

struct numeri* p2 = NULL;
p2= malloc (sizeof(struct numeri));
p2->succ=NULL;
printf ("Digita il numero da inserire:\n");
scanf ("%d", &p2->elemento);
p2->succ = il;
il = p2;
printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
scanf ("%d",&m);}}

oregon
04-07-2012, 19:39
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct numeri{
int elemento;
struct numeri *succ;
};

void inseriscitesta(struct numeri **il);
void stampalista (struct numeri* il);
int main(int argc, char *argv[])
{
int y;
struct numeri* il=NULL;
il= malloc (sizeof (struct numeri));
il->succ=NULL;
printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
scanf ("%d", &y);
if (y==1)
{printf ("Inserisci il nuemero:\n");
scanf ("%d", &il->elemento);}

inseriscitesta(&il);



while ( il!=NULL)
{
printf ("%d ---->", il->elemento);
il=il->succ;}

system("PAUSE");
return 0;
}

void inseriscitesta(struct numeri **il)
{
int m;
printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
scanf ("%d",&m);
while (m==1)
{

struct numeri* p2 = NULL;
p2= malloc (sizeof(struct numeri));
p2->succ=NULL;
printf ("Digita il numero da inserire:\n");
scanf ("%d", &p2->elemento);
p2->succ = *il;
*il = p2;
printf ("Digita 1 per inserire un numero, altrimenti digita 0\n");
scanf ("%d",&m);}
}

Metalmino
04-07-2012, 19:53
Ti ringrazio enormemente

Loading