Почему все выталкивается обратно в стек1
Это обусловлено тем фактом, что при выполнении операции удаления очереди вы извлекаете элемент из стека 1.
Предположим, у вас есть три операции нажатия x1, x2, x3 в одном и том же порядке.Поскольку ваша операция удаления из очереди всегда происходит из stack1, вы должны убедиться, что x1 находится сверху, с x2 под номером два и x3 под номером три сверху.Это может быть обеспечено только третьей точкой .
В алгоритме, о котором вы упоминали выше , очередь и очередь выполняются для стека1 .
Почему мы не можем использовать стек 2 в качестве очереди (во времяоперация постановки в очередь)
В этом случае вам придется выполнить операцию удаления очереди из стека 1.
ставить в очередь (q, x):
- вставить в стек 2. O (1)
deQueue (q):
- Если стек1 не пуст, тоpop из stack1.
Если stack1 пусто
2.1 Если stack2 также пусто, выдать ошибку.
2.2 Перенести все из stack2 в stack1.Теперь вытолкните вершину из stack1.Амортизированная сложность очереди будет O (1), потому что количество переданных элементов равно количеству вытолкнутых элементов из stack1.