Ciao ho un esercizio di strutture dati da proporvi :

Implementare le funzioni PUSH e POP di uno stack realizzato con due code. Analizzare i tempi di esecuzione
delle operazioni sullo stack.

Soluzione: Implementare uno stack basato su due code significa simulare una politica di accesso LIFO con
strutture dati ad accesso FIFO. Per fare ciò è possibile modificare la funzione Pop perché travasi tutti i valori
(tranne l’ultimo) nell’altra coda e infine ritorni l’ultimo valore. La funzione PUSH invece deve solamente
aggiungere l’elemento nella coda che contiene gli altri, per mantenere lo stesso ordine.

PUSH(S, x)
1 if QUEUE-EMPTY(Q1[S])
2 then ENQUEUE(Q2[S], x)
3 else ENQUEUE(Q1[S], x)

POP(S, x)
1 if QUEUE-EMPTY(Q2[S])
2 then dst←Q2[S]
3 src←Q1[S]
4 else dst←Q1[S]
5 src←Q2[S]
6 ►dst è la coda vuota nella quale verranno travasati i dati
7 while tail[src] - head[src] > 1 ►non è necessario calcolare il modulo
perché la coda è sempre piena dall’inizio e non si verificano cicli
8 do ENQUEUE(dst, DEQUEUE(src)


QUEUE-EMPTY (Q)
1 return head[Q] = tail[Q]
9 return DEQUEUE(src)


IL mio unico problema è questo ; ad esempio prendendo la riga 1
1 if QUEUE-EMPTY(Q1[S])

Non riesco a capire perchè alla coda gli viene dato in pasto lo Stack , che senso ha ??

grazie a chiunque possa aiutarmi ciaoo