Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

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

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Convertire una pila (LIFO) in una coda (FIFO)

Messaggioda Foto Utenteharpefalcata » 27 nov 2019, 15:40

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
Avatar utente
Foto Utenteharpefalcata
326 1 3 6
Stabilizzato
Stabilizzato
 
Messaggi: 422
Iscritto il: 28 lug 2015, 21:03

0
voti

[2] Re: Convertire una pila (LIFO) in una coda (FIFO)

Messaggioda Foto UtenteIlGuru » 27 nov 2019, 17:02

Io userei una lista orientata con due puntatori, uno al primo ed uno all'ultimo elemento della lista
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
5.482 2 10 13
G.Master EY
G.Master EY
 
Messaggi: 1924
Iscritto il: 31 lug 2015, 23:32

0
voti

[3] Re: Convertire una pila (LIFO) in una coda (FIFO)

Messaggioda Foto Utentexyz » 27 nov 2019, 17:56

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
Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
 
Messaggi: 1778
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti