Ciao, MItaly!! Grazie del tuo preziosissimo aiuto!![]()
Ho tardato un po' nel rispondere, perché volevo comprendere bene il codice che mi avevi scritto.. Ora non posto qui il mio, ma ti assicuro che i tuoi suggerimenti mi sono serviti a molto per la correzione di alcuni errori logici che avevo fatto nelle funzioni di inserimento ed eliminazione di un dato.. Poi appunto come mi hai detto tu di creare un membro privato della classe 'lastelem', che punta all'ultimo elemento della coda, è stato necessario per il suo corretto funzionamento.. Soltanto un paio di cose non mi sono molto chiare, però, e cioé :
1) Tu mi dici che deve essere un membro privato della classe, ma poi qui lo utilizzi come se fosse un metodo con lo stesso nome..
.. Questo non riesco a farlo, nemmeno se cambio nome alla funzione, mi risulta che è un errore. Non riesco a creare un metodo di tipo 'elem' che mi ritorni il valore dell'ultimo elemento. E di conseguenza anche :codice:elem* coda::lastelem() { if(lista == NULL) return NULL; elem* ret; for(ret = lista; ret->next != NULL; ret = ret->next); return ret; }
nella funzione 'enqueue()' non mi è consentito.. Ho risolto comunque diversamente con la creazione di un semplice puntatore all'ultimo elemento nella parte privata;codice:else lastelem()->next=nuovo;
2) Nella funzione 'dequeue()' tu hai utilizzato due comandi che non conosco, che però mi potrebbero essere utili :
per rendere appunto più pulito il codice.. Ma mi dovrebbero restituire qualche valore? Perché così non succede nulla in esecuzione.. E ' normale che non si veda nulla? Non ho capito cosa sia il 'valore magico'..codice:if(lista == NULL) { /* Possibilità 1: restituisco un valore magico che indica che la lista è vuota */ return std::numeric_limits<int>::min(); /* Possibilità 2: sollevo un'eccezione (richiede #include <stdexcept> */ throw std::runtime_error("La coda è vuota.");![]()
In ogni caso sei invitato ad una panzerottata giù dalle mie parti!!![]()
![]()

Rispondi quotando