栈后进先出,队列先进先出。
1.当stack2不为空时,stack2中的栈顶元素是最先进入队列的元素,可以弹出。
2.当stack2为空时,把stack1中的元素逐个弹入并压入stack2中,先入stack1的元素这时在stack2顶部,这时弹出stack2就完成了队列(书上的图更便于理解)
class Solution:
def __init__(self):
self.stack1=[]
self.stack2=[]
def push(self,node):
self.stack1.append(node) # 加入,一直从stack1添加
def pop(self):
if len(self.stack2)==0 and len(self.stack1)==0:
return
elif len(self.stack2)==0:
while len(self.stack1)>0: # 把stack1的元素全部弹出,并压入stack2
self.stack2.append(self.stack1.pop())
return self.stack2.pop() # 把stack2中的栈顶元素弹出,即完成了队列
# s = Solution()
# s.push(1)
# s.push(2)
# s.push(3)
# s.push(4)
# print(s.pop())
# s.push(5)
# print(s.pop())
# print(s.pop())
# print(s.pop())
# s.push(6)
# print(s.pop())
# print(s.pop())