Нужно реализовать fifo queue, используя абстрактную реализацию стека (для вывода одного алгоритма из другого, детали в общем не важны). Есть стандартный метод: два стека Butt и Head; чтобы вставить элемент в очередь, push'аем его в Butt, чтобы достать елемент из очереди, pop'аем его из Head, если он не пустой, а если пустой, то по очереди pop'аем все из Butt и push'аем в Head, а потом pop'аем из Head. Получается, если начинать с пустой очереди, амортизированная стоимость одной операции над ней - не больше трех стековых операций. Для задачи достаточно, но просто интересно, есть ли более хитрый подход.