Pagina 1 di 1

Convertire una pila (LIFO) in una coda (FIFO)

MessaggioInviato: 27 nov 2019, 15:40
da harpefalcata
Buonasera a tutti,

Ho a disposizione un frammento di memoria, all'interno del quale posso salvare dati nella forma di una pila, di tipo Last In, First Out, ovvero l'ultimo elemento inserito nella pila, è quello che viene estratto per primo.

A me servirebbe convertire questo tipo di stack in una coda, ovvero in una First In, First Out, in modo che, ad ogni operazione di "pop" dallo stesso stack, mi restituisca non l'ultimo valore inserito, ma il primo.

Sapete se esiste qualche algoritmo collaudato, oppure qualche libreria open che fa questo genere di trasformazione?

L'unico metodo che mi viene in mente è di usare un iteratore che tenga costantemente traccia del numero e della posizione di tutti gli elementi, in modo da poter raggiungere sia top che bottom della mia pila, e poter estrarre il primo valore, ma mi sembra un metodo un po' contorto, magari esiste qualche sistema più ottimizzato.

Vi ringrazio.

Un saluto

Re: Convertire una pila (LIFO) in una coda (FIFO)

MessaggioInviato: 27 nov 2019, 17:02
da IlGuru
Io userei una lista orientata con due puntatori, uno al primo ed uno all'ultimo elemento della lista

Re: Convertire una pila (LIFO) in una coda (FIFO)

MessaggioInviato: 27 nov 2019, 17:56
da xyz
Se la dimensione massima è nota a priori e le sole operazione sono quelle di inserire e togliere basta un semplice buffer circolare:

https://en.wikipedia.org/wiki/Circular_buffer