Pile e liste e code: aiuto per favore

Bandit1
Ciao a tutti ragazzi mi sono appena imbattuto nelle classi delle pile liste e code.

Potete darmi per favore qualche supporto esemplificativo: non riesco a capire bene le cose.

Avete poi anche dei link da dove studiare meglio l'argomento? dal libro "da c++ ad uml" non lo vedo molto pratico per capire bene (ci sono esercizi spiegati per capire meglio?)



grazie mille

Risposte
nessuno.nobody
Hai ben chiaro il fatto che quei tre ADT (Abstract Data Type) sono dei Template?
Una volta capito quello, non hai null'altro da capire se non ricordare i metodi da usare nei vari ADT.

Bandit1
"nessuno.nobody":
Hai ben chiaro il fatto che quei tre ADT (Abstract Data Type) sono dei Template?
Una volta capito quello, non hai null'altro da capire se non ricordare i metodi da usare nei vari ADT.

no: la parola template non è proprio nominata, almeno per il momento.
tramite slides, e tramite i due libri su cui mi sono appoggiato fino ad ora, non è comparsa proprio questo termine.
Per lo più sono state definite come classi

claudio862
Sono strutture dati, contengono degli elementi e offrono alcune operazioni su di essi.

Una lista è una sequenza di elementi. Non è molto diversa da un vettore, ma a differenza di quest'ultimo permette di inserire / rimuovere elementi in qualsiasi punto in modo efficiente (normalmente in tempo costante, mentre in un vettore il tempo è lineare, dato che ad ogni inserimento / rimozione deve spostare tutti gli altri elementi). Lo svantaggio è che invece l'accesso diretto all'ennesimo elemento ha costo lineare, mentre nei vettori è a costo costante.
Morale: se inserisci e rimuovi molti elementi usa una lista, se invece i dati non variano spesso e sono acceduti in modo casuale usa un vettore.

Coda e pila sono strutture simili alla lista ma più "limitate". Con una coda puoi inserire degli elementi dal fondo e prelevarli dalla cima. L'esempio classico è il buffer: se ad un servizio arrivano richieste mentre è occupato, queste richieste devono attendere il loro turno, e devono essere servite nell'ordine in cui sono arrivate. Quindi quando arriva una richiesta viene messa in fondo alla coda, e quando il servizio è libero prende la richiesta che c'è all'inizio della coda.
La coda implementa la politica FIFO, First-In First-Out, il primo che arriva è il primo che se ne va.

La pila implementa la politica inversa, LIFO, Last-In First-Out, l'ultimo che arriva è il primo che se ne va. Non mi viene in mente un esempio semplice, però è utile negli algoritmi sugli alberi.

Un buon libro dovrebbe essere "Pensare in C++" (che è la traduzione di "Thinking in C++"). Si trova gratis su internet.

Bandit1
grazie claudio
un bel riassunto generale.
Ma in questo libro che hai detto trovo anche l'implementazioni in programma? in modo che capisco in che modo si mettono in pratica?

claudio862
No, credo di no, dovrebbe essere solo teoria.
Per degli esercizi forse ti conviene cercare delle dispense da corsi universitari. Cercando "c++ esempi pile code" si trova un po' di roba, tra cui questo che sembra interessante.

penultimo56
ciao bandit! anche io sto studiando il tuo stesso argomento e sto avendo delle difficoltà enormi. uso il tuo stesso libro per imposizione del mio ex prof. sei per caso anche tu uno studente di ingegneria informatica della federico 2? possiamo studiare insieme qualche volta per cercare di superare questo ostico esame di programmazione! fammi sapere, anche in privato. ciao!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.