Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Tallid
    Registrato dal
    Jan 2009
    Messaggi
    76

    Dubbio struttura c

    Date le seguenti consegne:

    Definisci un tipo struttura Ristorante i cui elementi siano descrizioni di ristoranti: ogni valore di questo tipo struttura dovrà avere campi che includano il nome, l’indirizzo, il costo medio di un pasto e il numero di posti.

    Utilizzando il tipo Ristorante descritto nell’esercizio precedente, definisci il tipo ListaDiRistoranti, i cui elementi siano liste semplici di valori appartenenti al tipo Ristorante.

    ho scritto il seguente codice per le strutture ristorante e ListaDi Ristoranti

    codice:
    typedef struct ristorante{
             char *nome;        
             char *indirizzo;
             double costomedio;
             int posti; 
    }Ristorante;
      
    typedef struct ListaR{
             Ristorante ristorante;
             struct ListaR *next;
     }ListaDiRistoranti;
    però mi sono accorto che non è possibile scorrere la lista infatti se scrivo

    codice:
    ListaDiRistoranti r;
    while(r!=NULL){
          
          printf(....);
          r=r.next;
    }
    il compilatore mi dice che non posso confrontare r con NULL.
    Qualcuno può darmi una mano a risolvere il problema(cambianndo la struttura o trovando un modo alternativo per scorrerla)?

  2. #2
    codice:
    typedef struct ristorante{ //è l'elemento "nodo" che deve avere il puntatore a next.
             char *nome;        
             char *indirizzo;
             double costomedio;
             int posti; 
             Ristorante *next;
    }Ristorante;
    
    typedef struct ListaR{
             Ristorante *ptesta;
             //altre eventuali variabili di utilità quali n_elementi, pcoda, etc...
     }ListaDiRistoranti;

    codice:
    ListaDiRistoranti *r = NULL;
    r = (ListaDiRistoranti*) malloc(sizeof(ListaDiRistoranti));
    r->ptesta = NULL;
    //inizializzazione dei vari campi
    
    }
    all that you need:
    http://www.cplusplus.com/reference/clibrary/

  3. #3
    Utente di HTML.it L'avatar di Tallid
    Registrato dal
    Jan 2009
    Messaggi
    76
    e se invece facessi

    codice:
    typedef struct ristorante{
                  //nome,indirizzo,ecc...
                  struct ristorante *next;
    }Ristorante;
    
    typedef Ristorante *ListaDiRistoranti;
    
    
    ListaDiRistoranti r=NULL;

  4. #4
    E' un alternativa, ma in questo caso come fai a definire se la lista è vuota o meno?

    Di fatto la tua lista, appena creata, coincide con il primo elemento, il che rende problematico definire se è vuota o piena (controlli se il puntatore in generale è a NULL? controlli se ha campi con valori non validi? Stabilisci un valore vuoto? Cosa fai quando devi cancellare quell'unico elemento, setti il puntatore a null, metti un valore fittizio o cosa? etc)


    di solito conviene sempre creare un elemento Lista che contenga il puntatore a testa e altri dati importanti (puntatore a coda, numero di elementi, numero massimo di elementi, etc) e un elemento Nodo che contenga i vari dati e il puntatore a next

    scrivendo la libraria per le liste ti renderai conto che è enormemente più facile scrivere le funzioni lavorando in questo modo. E spesso è anche più efficiente.
    all that you need:
    http://www.cplusplus.com/reference/clibrary/

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.