'''
队列特点:先进先出,一端进一端出
栈特点:先进后出,只从尾部出
思路:
栈1:作为队列的队尾,进行入队(入栈)操作: [100,200,300] ->append()入队
栈1弹栈:让数据结构变成[300,200,100]
栈2:作为队列的队头,先将栈1弹出来的元素入栈( [300,200,100] ->stack_b.append(stack_a.pop()),然后再进行出栈(出队)操作
'''
class Solution:
def __init__(self):
'''创建2个栈空间'''
self.stack_a = []
self.stack_b = []
def push(self,value):
'''入队列:在stack_a中添加元素'''
self.stack_a.append(value)
def pop(self):
'''弹栈'''
#假如stack_b中有值,直接出队,否则先将stack_a中的值循环弹出来添加到stack_b中(一直到值都弹完),
if self.stack_b:
return self.stack_b.pop()
else:
#当self.stack_a中有值时,弹栈并添加到stack_b中
while self.stack_a:
stack_b.append(stack_a.pop())
return self.stack_b.pop()
if __name__ == '__main__':
s = Solution()
s.push(100)
s.push(200)
s.push(300)
print(s.pop()) #第一次pop:100
print(s.pop()) #第二次pop:200
print(s.pop()) #第三次pop:300
python 两个栈实现队列入队出队功能
最新推荐文章于 2023-07-16 00:56:17 发布