from collections import deque class Stack: def __init__(self): self.stack = deque() def push(self, item): self.stack.append(item) def pop(self): if not self.is_empty(): return self.stack.pop() def is_empty(self): return len(self.stack) == 0 def size(self): return len(self.stack) def peek(self): if not self.is_empty(): return self.stack[-1] def __str__(self): return str(self.stack) if __name__ == '__main__': stack = Stack() stack.push(1) stack.push(2) stack.push(3) print(stack) # deque([1, 2, 3]) print(stack.peek()) # 输出 3 stack.pop() print(stack.peek()) # 输出 2 print(stack.pop()) # 输出 2 print(stack.pop()) # 输出 1 print(stack.is_empty())
在这个实现中,我们首先导入了deque,然后定义了一个名为Stack的类。类中包含以下方法:
__init__(self)
:初始化一个空的双向队列。push(self, item)
:向队列的右端添加一个元素。pop(self)
:从队列的右端删除一个元素并返回它。如果队列为空,返回None。is_empty(self)
:检查队列是否为空。如果队列为空,返回True;否则返回False。size(self)
:返回队列中的元素数量。peek(self)
:返回队列中的最后一个元素但不删除它。如果队列为空,返回None。__str__(self)
:将队列转换为字符串以便于调试。
使用这个实现,我们可以创建一个新的栈对象并使用push()方法向其中添加元素。当我们想要访问栈顶元素时,可以使用peek()方法。要删除栈顶元素,可以使用pop()方法