Visualizzazione dei risultati da 1 a 10 su 14

Discussione: problema lista [c]

Visualizzazione discussione

  1. #12
    Se ci rifletti è normale che succeda questo dato che ogni nuovo nodo diventa la testa della lista stessa.
    Se vuoi mantenere l'ordine corretto devi aggiungere in coda ogni nuovo nodo che crei.

    Per quanto riguarda l'eventualità dei dati non corretti si può semplicemente ignorare le righe non conformi
    codice:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    typedef struct _ElementoLista
    {
        char   identificativo[10];
        double reale;
        double immaginario;
        struct _ElementoLista *next;
    } elementoLista, *pElemento;
    
    void stampalista(pElemento a);
    
    int main(void)
    {
        int result;
        char  identificativo[10] = "";
        double reale = 0.0;
        double immaginario = 0.0;
        
        pElemento lista = NULL, nuovoElemento = NULL;
        FILE *fp;
        fp = fopen("lista_problema_lista.txt", "r");
        // fp = fopen("prova.txt", "r");
        if( ! fp )
        {
            printf("Errore apertura file !\n");
            exit( -1 );
        }
        puts("Lettura da file :\n");
        while( (result = fscanf(fp, "%s %lg %lg", identificativo, &reale, &immaginario)) != EOF )
        {
            if( result == 3 )
            {
                printf("%s = %g + %g\n", identificativo, reale, immaginario);
                nuovoElemento = (elementoLista*)malloc(sizeof(elementoLista));
                strcpy( nuovoElemento->identificativo, identificativo );
                nuovoElemento->reale = reale;
                nuovoElemento->immaginario = immaginario;
                nuovoElemento->next = lista;
                lista = nuovoElemento;
            }
        }
        fclose(fp);
        stampalista(lista);
        
        puts("\n\nterminato");
        getchar();
        return (0);
    }
    
    void stampalista(pElemento a)
    {
        puts("\nContenuto lista :\n");
        while( a!=NULL )
        {
            printf("%s = %g + i%g\n", a->identificativo, a->reale, a->immaginario);
            a=a->next;
        }
    }
    Ultima modifica di Samuele_70; 28-12-2014 a 19:37
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

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