Хотя цель упражнения очень сомнительна (запутанный способ злоупотребления структурами данных), вы должны помнить разницу между стеком и очередью.Очередь - это структура «первым пришел - первым вышел», а стек - первым вышел последним.
Если вы вытаскиваете все элементы из одного стека и помещаете их в другой, вы делаете двойную инверсию.И их стеки FILO могут производить поведение FIFO как очередь.Но ...
Вы не можете ничего вытолкнуть во второй стек, если вы начали потреблять предметы, пока он не опустеет.
Так что держите в стеке для входящих элементов.Затем, как только у вас появится извлечение из второго стека, пока он не станет пустым, и тогда и только тогда вы перенесете элементы из стека 1 в стек 2 ...
def _move_stack(self):
while not self.in_stack.is_empty():
self.out_stack.push (self.in_stack.pop ())
def dequeue(self):
If out_stack.is_empty():
self._move_stack()
return self.out_stack.pop()