Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    8

    [ C ] Lista inserimento in coda problema di visualizzazione

    Ciao a tutti,

    Sto facendo le liste e ho fatto l'inserimento di un elemento in coda, ma quando vado a visualizzare la lista mi visualizza solo l'ultimo numero inserito, mentre nella procedura di inserimento in testa mi visualizza tutto correttamente..
    Non riesco a capire..

    Ecco il codice

    codice:
    #include <stdio.h>
    #include <malloc.h>
    #include <string.h>
    
    /* DICHIARAZIONE */
    
    struct elemento {
       int inf;
       struct elemento *punt;//PUNTA AL PROSSIMO NODO
    };
    
     elemento *p0;
     char sc;
    
    elemento *crealista(elemento *p0)
    {
        p0=NULL;
        return p0;
    }
    
    void crealista(elemento **p0)
    {
    *p0=NULL;//LISTA VUOTA
    }
    
    elemento *inserimentoInCoda(elemento *p0)
    {
        int num;
    
        printf("inserisci il numero:");
        scanf("%d", & num);
    
        struct elemento *p;
        p=(elemento*)malloc(sizeof(elemento));
        p->inf=num;
    
        if(p0==NULL)//VUOTA..
        {
            p0=p;
            p->punt=NULL;
        }
    else //INSERIMENTO IN TESTA
    {
       struct elemento *h;//PUNTATORE AUSILIARIO
        h=p0;
        while(h->punt!=NULL)
        {
            h=h->punt;//ISTRUZIONE SCORRI LISTA
        }
    
        h->punt=p;
        p->punt=NULL;
    }
    }
    
    void visualizza_lista(struct elemento *p0)
    {
    
       printf("lista -> ");
    
       /* CICLO FINCHE' NON E' VUOTA */
       while(p0 != NULL)
       {
          printf("[%d]", p0->inf); // VISUALIZZA L'INFORMAZIONE
          printf(" -> ");
          p0 = p0->punt; // SCORRE DI UN ELEMENTO
       }
    
       printf("NULL\n");
    }
    
    main()//GESTIONE A MENU
    {
        p0=crealista(p0);
        do
    {
        system("cls");
        printf("\t- MENU -\n");
        printf("Premi 1 per inserire un numero in coda!\n");
        printf("Premi 2 per visualizzare la lista.\n");
        printf("Premi S per finire... \n ");
    
     scanf("%d", & sc);
    
        if(sc==1) {p0=inserimentoInCoda(p0);}
        if(sc==2) {visualizza_lista(p0);system("pause");}
    
    }
    while(sc!='s');
    
    
    }
    Grazie.
    File allegati File allegati
    Ultima modifica di faza; 30-01-2014 a 21:44

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Un .doc? :O
    Mi stupisco se compila!
    Devi copiare il codice e incollarlo dento i tag [ C O D E ] [ / C O D E ]
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    8
    Ok grazie, fatto!
    Ultima modifica di faza; 30-01-2014 a 21:45

  4. #4
    Io sto studiando il C in questo periodo, quindi il mio suggerimento prendilo con le pinze, ma prova a salvare l'indirizzo dell'elemento a cui punta inizialmente il puntatore alla lista e, a fine degli inserimenti in coda, far puntare nuovamente il puntatore al primo elemento a tale indirizzo.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.