0
点赞
收藏
分享

微信扫一扫

Python编程:用两个栈实现队列

攻城狮Chova 2022-02-17 阅读 43


用两个栈实现队列思路:

入队进入一个栈,从另一栈出队

外加一个元素传递的方法,负责将元素从入队栈转移到出队栈

入队栈:1,2,3

出队栈:3,2,1

# 先实现一个栈
class Stack():
def __init__(self):
self.stack = []

def push(self, item):
self.stack.append(item)

def pop(self):
return self.stack.pop()

def is_empty(self):
return len(self.stack) == 0


# 使用栈实现队列
class StackQueue():
def __init__(self):
self.stack_a = Stack()
self.stack_b = Stack()

# 入队操作
def enqueue(self, item):
self.stack_a.push(item)

# 出队操作
def dequeue(self):
if self.stack_b.is_empty():
if self.stack_a.is_empty():
return None
self._transfer()
return self.stack_b.pop()

# 栈A元素转移到栈B
def _transfer(self):
while (not self.stack_a.is_empty()):
self.stack_b.push(self.stack_a.pop())


if __name__ == '__main__':
stack_queue = StackQueue()
stack_queue.enqueue(1)
stack_queue.enqueue(2)
stack_queue.enqueue(3)
stack_queue.enqueue(4)
print(stack_queue.dequeue())
print(stack_queue.dequeue())
stack_queue.enqueue(5)
stack_queue.enqueue(6)
print(stack_queue.dequeue())
print(stack_queue.dequeue())
print(stack_queue.dequeue())
print(stack_queue.dequeue())
print(stack_queue.dequeue())
"""
1
2
3
4
5
6
None
"""


参考
​​漫画:如何用栈实现队列?​​




举报

相关推荐

0 条评论