在Python中,实现一个栈可以通过多种方式,但最常见和直观的方式是使用列表(List)来模拟栈的行为。因为列表自带了添加元素到末尾(相当于入栈操作)和从末尾移除元素(相当于出栈操作)的方法,这使得使用列表来实现栈变得非常方便。
以下是一个简单的栈实现,包括入栈(push
)、出栈(pop
)和查看栈顶元素(peek
或top
)的操作:
python复制代码
class Stack: | |
def __init__(self): | |
self.items = [] # 使用列表来存储栈中的元素 | |
def push(self, item): | |
"""入栈操作,将元素添加到栈顶""" | |
self.items.append(item) | |
def pop(self): | |
"""出栈操作,移除并返回栈顶元素 | |
如果栈为空,则抛出异常 | |
""" | |
if not self.is_empty(): | |
return self.items.pop() | |
else: | |
raise IndexError("pop from empty stack") | |
def peek(self): | |
"""查看栈顶元素,不移除 | |
如果栈为空,则抛出异常 | |
""" | |
if not self.is_empty(): | |
return self.items[-1] | |
else: | |
raise IndexError("peek from empty stack") | |
def is_empty(self): | |
"""检查栈是否为空""" | |
return len(self.items) == 0 | |
def size(self): | |
"""返回栈的大小(即栈中元素的数量)""" | |
return len(self.items) | |
# 使用示例 | |
stack = Stack() | |
stack.push(1) | |
stack.push(2) | |
stack.push(3) | |
print(stack.peek()) # 输出 3 | |
print(stack.pop()) # 输出 3 | |
print(stack.is_empty()) # 输出 False | |
print(stack.size()) # 输出 2 |
上述代码中,Stack
类定义了一个栈,其中items
列表用于存储栈中的元素。push
方法将新元素添加到items
列表的末尾,pop
方法从items
列表的末尾移除一个元素并返回它(如果栈为空,则抛出异常)。peek
方法返回栈顶元素但不移除它(如果栈为空,则抛出异常)。is_empty
方法检查栈是否为空,而size
方法返回栈中元素的数量。