Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Come passo la lista per riferimento in C?

    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.


    codice:
    #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);}}

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: Come passo la lista per riferimento in C?

    codice:
    #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);}
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ti ringrazio enormemente

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.