Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - liste dinamiche bidirezionali in c
Forum - C/C++ - liste dinamiche bidirezionali in c

Avatar
el cuba libre (Normal User)
Newbie


Messaggi: 20
Iscritto: 07/03/2011

Segnala al moderatore
Postato alle 13:58
Lunedì, 18/04/2011
ciao a tutti
mi è stato assegnato un compito per le vacanze pasquali nel quale devo sviluppare un programma in grado di gestire i risultati di un campionato di calcio. il testo dice anche che si devono usare le liste. l'argomento non mi è chiarissimo ma mi sono abbastanza racappezzato. pensavo di creare lista divisa in due parti. dato che il campionato è diviso in giornate e ogni gioranta ha le sue partite pensavo di fare proprio cosi, cioè una struttura per le partite e una per le giornate. ho già creato il pezzo di codice per una singola giornata, ora però volevo fare in modo di poter inserire più giornate. ho creato una nuova struttura con un solo puntatore per esempio giornate *q, il mio problema è riuscire a fare un puntatore che punti alla prima struttura. qualcuno ha delle idee?
grazie mille

PM
Avatar
Alex (Ex-Member)
Expert


Messaggi: 441
Iscritto: 15/08/2005

Up
1
Down
V
Segnala al moderatore
Postato alle 17:21
Lunedì, 18/04/2011
se hai una struttura
Codice sorgente - presumibilmente C/C++

  1. struct {
  2.     int n;
  3.     struct lista *next;
  4. }lista;



dichiari un puntatore alla lista:
Codice sorgente - presumibilmente C/C++

  1. struct lista *primo_elemento=NULL;



poi per allocare spazio per le varie voci
Codice sorgente - presumibilmente C/C++

  1. struct lista *nuovo;
  2. nuovo=malloc(sizeof(struct lista));
  3. //adesso devi collegare questo elemento alla lista quindi:
  4. nuovo->next=primo_elemento;
  5. primo_elemento=nuovo;



e facendo così hai collegato il nuovo elemento alla lista. dimmi se hai bisogno che ti spieghi anche come si fa a cancellare un elemento...

EDIT scusa, ho appena letto che le liste sono bidirezionali, il discorso non cambia, devi semplicemente aggiungere un puntatore all'elemento precedente e poi impostarlo a NULL; quando colleghi un nuovo elemento assegni il suo indirizzo al puntatore del precedente!
comunque penso che, a meno che tu non abbia particolari esigenze, una lista concatenata singola con un solo puntatore basti e avanzi!

Ultima modifica effettuata da Alex il 18/04/2011 alle 17:24
E usa calloc invece che malloc. - pierotofy - 18/04/11 18:00
scusa se ti scrivo qui ma non mi fa rispondere, come potrei fare per usare una sola lista concatenata? adesso non posso provare il codice ma credo che ti dovrò chiedere alcuni chiarimenti! grazie mille - el cuba libre - 18/04/11 19:48


Alex=)
PM