可以使用两个队列来实现栈算法。具体实现如下:
class Stack:
def __init__(self):
self.queue1 = []
self.queue2 = []
def push(self, x):
# 将元素添加到非空队列中
if self.queue1:
self.queue1.append(x)
else:
self.queue2.append(x)
def pop(self):
# 将非空队列中除最后一个元素外的所有元素移到另一个队列中
if self.queue1:
while len(self.queue1) > 1:
self.queue2.append(self.queue1.pop(0))
return self.queue1.pop()
else:
while len(self.queue2) > 1:
self.queue1.append(self.queue2.pop(0))
return self.queue2.pop()
上述代码中,在 push()
方法中,如果 queue1
非空,则将元素添加到 queue1
中,否则将元素添加到 queue2
中。在 pop()
方法中,如果 queue1
非空,则将 queue1
中除最后一个元素外的所有元素移动到 queue2
中,然后返回 queue1
中的最后一个元素;如果 queue1
为空,则将 queue2
中除最后一个元素外的所有元素移动到 queue1
中,然后返回 queue2
中的最后一个元素。