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++ - linguaggio c: coda di coda.
Forum - C/C++ - linguaggio c: coda di coda.

Avatar
Premoli (Normal User)
Pro


Messaggi: 108
Iscritto: 25/06/2009

Segnala al moderatore
Postato alle 12:53
Mercoledì, 22/07/2009
ciao a tutti!!!

ho difficoltà ad implementare una coda di coda...

allora ho creato due struct

Codice sorgente - presumibilmente C++

  1. struct ele1{
  2.     int inf;
  3. };
  4.  
  5. struct ele2{
  6.     struct ele1 *pun;
  7.     struct ele2 *next;
  8. };



e fin qui credo che sia tutto ok (spero :-? )

ma poi quando devo andare a caricare la coda come devo procedere? potete aiutarmi?

in attesa di una risposta vi ringrazio anticipatamente.

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 695
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 13:15
Mercoledì, 22/07/2009
Testo quotato

Postato originariamente da Premoli:

ciao a tutti!!!

ho difficoltà ad implementare una coda di coda...

allora ho creato due struct

Codice sorgente - presumibilmente C++

  1. struct ele1{
  2.     int inf;
  3. };
  4.  
  5. struct ele2{
  6.     struct ele1 *pun;
  7.     struct ele2 *next;
  8. };



e fin qui credo che sia tutto ok (spero :-? )

ma poi quando devo andare a caricare la coda come devo procedere? potete aiutarmi?

in attesa di una risposta vi ringrazio anticipatamente.



Dipende,

se devi fare l'inserimento degli elementi separatamente in una coda, e poi inserire la coda nella multilista, allora devi fare due normali inserimenti in coda.

Se invece devi caricare un elemento direttamente nella multilista ( si chiama cosi' questo tipo di struttura ) devi sapere anche in quale coda, quindi fare una ricerca della coda e fare un normale inserimento;

a tale scopo ti consiglio di modificare la struttura delle liste inserendo un campo per identificarle, qualcosa del genere:

Codice sorgente - presumibilmente C++

  1. struct elem{
  2.     int inf;
  3.     elem *next;
  4. };
  5.  
  6. struct list{
  7.     int id;
  8.     elem *first;
  9.     list *next;
  10. };
  11.  
  12. struct m_list{
  13.     struct list *first;
  14. };



Le cose si fanno per bene o non si fanno affatto
PM Quote
Avatar
ingMark (Ex-Member)
Pro


Messaggi: 176
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 13:36
Mercoledì, 22/07/2009
all'inizio ti consiglio di visualizzare la tua struttura graficamente (giusto le prime volte, per renderti conto su cosa lavori).

Ad esempio io le immaginavo in questo modo.
_______________       _______________
|               |     |               |
|   Punttesta   |---> | lista interna |--->
|_______________|     |_______________|
        |                    
_______|_______       _______________
|               |     |               |
| lista esterna |---> | lista interna |--->
|_______________|     |_______________|
        |
        |

Allora è quasi immediato capire che ti serviranno due cicli.
Uno per la lista più esterna e uno per quella più interna.

Solitamente si tratta di due cicli while (ovvero finchè il puntatore che scorre le due liste è != da NULL) :k:

EDIT: purtroppo i rettangolini non vengono come li ho scritti :P in ogni caso penso si capisca^^

Ultima modifica effettuata da ingMark il 22/07/2009 alle 13:38


Mamma diceva sempre che stupido è chi lo stupido fa.
PM Quote
Avatar
Premoli (Normal User)
Pro


Messaggi: 108
Iscritto: 25/06/2009

Segnala al moderatore
Postato alle 14:27
Mercoledì, 22/07/2009
io vorrei creare una struttura del genere:

Codice sorgente - presumibilmente Plain Text

  1. [ ]----->[ ]---->[ ]---->NULL
  2.           |       |
  3.           v       v
  4.           56      8
  5.           |       |
  6.           v       v
  7.           6       89
  8.           |       |
  9.           v       v
  10.          NULL    NULL



quindi correggo le 2 strutture così:

Codice sorgente - presumibilmente C++

  1. struct elem{
  2.    int inf;
  3.    struct elem *pun;
  4. };
  5.  
  6. struc elem1{
  7.    struct elem1 *next;
  8.    struct elem1 *new;
  9. };



così potrebbe andare bene?

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 695
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 14:51
Mercoledì, 22/07/2009
Testo quotato

Postato originariamente da Premoli:

io vorrei creare una struttura del genere:

Codice sorgente - presumibilmente Plain Text

  1. [ ]----->[ ]---->[ ]---->NULL
  2.           |       |
  3.           v       v
  4.           56      8
  5.           |       |
  6.           v       v
  7.           6       89
  8.           |       |
  9.           v       v
  10.          NULL    NULL



quindi correggo le 2 strutture così:

Codice sorgente - presumibilmente C++

  1. struct elem{
  2.    int inf;
  3.    struct elem *pun;
  4. };
  5.  
  6. struc elem1{
  7.    struct elem1 *next;
  8.    struct elem1 *new;
  9. };



così potrebbe andare bene?



se la elem1 e' una lista deve avere un puntatore al primo elemento di tipo elem, inoltre non capisco cosa rappresenta il campo new


Le cose si fanno per bene o non si fanno affatto
PM Quote
Avatar
Premoli (Normal User)
Pro


Messaggi: 108
Iscritto: 25/06/2009

Segnala al moderatore
Postato alle 15:44
Mercoledì, 22/07/2009
scusa ho sbagliato a scrivere...

Codice sorgente - presumibilmente C++

  1. struct elem{
  2.    int inf;
  3.    struct elem *pun;
  4. };
  5.  
  6. struc elem1{
  7.    struct elem *next;
  8.    struct elem1 *new;
  9. };



volevo fare così...
spero vada bene... :-|

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 695
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 16:11
Mercoledì, 22/07/2009
Testo quotato

Postato originariamente da Premoli:

scusa ho sbagliato a scrivere...

Codice sorgente - presumibilmente C++

  1. struct elem{
  2.    int inf;
  3.    struct elem *pun;
  4. };
  5.  
  6. struc elem1{
  7.    struct elem *next;
  8.    struct elem1 *new;
  9. };



volevo fare così...
spero vada bene... :-|



semmai il contrario, in genere con next si indica il prossimo elemento dello stesso tipo della struttura ( il puntatore, ovviamente ) per cui avresti:

Codice sorgente - presumibilmente C++

  1. struct elem{
  2.    int inf;
  3.    struct elem *next;
  4. };
  5.  
  6. struc elem1{
  7.    struct elem1 *next;
  8.    struct elem *new;
  9. };



e dovrebbe andare bene; poi, ti ripeto, sarebbe utile poter identificare ogni lista, come nel mio precedente esempio, ma dipende da dove devi usarla.

Ciao. :k:

Luigi


Le cose si fanno per bene o non si fanno affatto
PM Quote
Avatar
Premoli (Normal User)
Pro


Messaggi: 108
Iscritto: 25/06/2009

Segnala al moderatore
Postato alle 16:13
Mercoledì, 22/07/2009
grazie sei stato gentilissimo...

ora provo ad implementare la funzione carica...


PM Quote