Una domanda simile è stata posta prima lì , ma la domanda qui è il contrario, usando due code come stack. La domanda...
Dati due code con le operazioni standard ( enqueue
, dequeue
, isempty
, size
), implementare uno stack con le operazioni standard ( pop
, push
, isempty
, size
).
Dovrebbero esserci due versioni della soluzione.
- Versione A : lo stack dovrebbe essere efficiente quando si spinge un oggetto; e
- Versione B : lo stack dovrebbe essere efficiente quando si fa scoppiare un oggetto.
Sono interessato all'algoritmo più di qualsiasi implementazione specifica del linguaggio. Tuttavia, accolgo con favore le soluzioni espresse in lingue che conosco (Giava,c #,pitone,vb,javascript,php).
Pop
funziona in $ O (1) $ e Push
funziona in $ O (\ sqrt {n}) $ tempo ammortizzato.