使用 Python 列表实现栈数据结构(stack)。编写从堆栈中的函数push、pop 和 peek 元素
时间: 2024-09-24 20:02:34 浏览: 50
在Python中,列表非常适合用来实现栈(Stack)数据结构,因为它提供了方便的索引访问和动态大小调整功能。栈遵循“先进后出”(Last In First Out, LIFO)的原则,这意味着最后一个被压入的元素是第一个被弹出的元素。
以下是如何使用列表实现栈的三个基本操作:`push`(压入元素)、`pop`(弹出元素)和`peek`(查看顶部元素但不移除):
```python
class Stack:
def __init__(self):
self.stack = []
# push (压入) 元素到栈顶
def push(self, item):
self.stack.append(item)
# pop (弹出) 栈顶元素
def pop(self):
if not self.is_empty():
return self.stack.pop()
else:
raise IndexError("Pop from empty stack")
# peek (查看) 栈顶元素但不移除
def peek(self):
if not self.is_empty():
return self.stack[-1]
else:
raise IndexError("Peek on empty stack")
# 检查栈是否为空
def is_empty(self):
return len(self.stack) == 0
# 示例用法
s = Stack()
s.push(1)
s.push(2)
s.push(3)
print(s.peek()) # 输出: 3
print(s.pop()) # 输出: 3
print(s.pop()) # 输出: 2
print(s.is_empty()) # 输出: False
```
在这个实现中,`push`方法使用`append`操作将元素添加到列表末尾;`pop`方法如果栈不空则返回并移除列表末尾的元素,否则抛出异常;`peek`方法也检查栈是否为空,如果非空则返回末尾元素,不改变栈的状态;`is_empty`方法用于检查栈是否为空,是通过比较列表长度来判断的。
阅读全文