使用 Python 实现一个简单的栈(Stack)类
栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。我们可以使用 Python 的列表来实现一个简单的栈类。这个类将包含以下几个基本操作:
push(item)
:将元素item
压入栈顶。pop()
:移除并返回栈顶的元素。peek()
:返回栈顶的元素但不移除它。is_empty()
:检查栈是否为空。size()
:返回栈中元素的数量。
实例
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
if self.is_empty():
raise IndexError("pop from empty stack")
return self.items.pop()
def peek(self):
if self.is_empty():
raise IndexError("peek from empty stack")
return self.items[-1]
def size(self):
return len(self.items)
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
if self.is_empty():
raise IndexError("pop from empty stack")
return self.items.pop()
def peek(self):
if self.is_empty():
raise IndexError("peek from empty stack")
return self.items[-1]
def size(self):
return len(self.items)
代码解析:
__init__(self)
:初始化一个空列表items
来存储栈中的元素。is_empty(self)
:检查栈是否为空,如果items
列表为空则返回True
,否则返回False
。push(self, item)
:将元素item
添加到items
列表的末尾,即压入栈顶。pop(self)
:移除并返回items
列表的最后一个元素,即栈顶元素。如果栈为空,则抛出IndexError
异常。peek(self)
:返回items
列表的最后一个元素,即栈顶元素,但不移除它。如果栈为空,则抛出IndexError
异常。size(self)
:返回items
列表的长度,即栈中元素的数量。
输出结果:
实例
# 示例使用
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.peek()) # 输出: 3
print(stack.pop()) # 输出: 3
print(stack.size()) # 输出: 2
print(stack.is_empty()) # 输出: False
stack.pop()
stack.pop()
print(stack.is_empty()) # 输出: True
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.peek()) # 输出: 3
print(stack.pop()) # 输出: 3
print(stack.size()) # 输出: 2
print(stack.is_empty()) # 输出: False
stack.pop()
stack.pop()
print(stack.is_empty()) # 输出: True
在这个示例中,我们首先创建了一个栈对象 stack
,然后依次将元素 1
、2
和 3
压入栈中。接着我们查看了栈顶元素(3
),并移除了它。最后我们检查了栈的大小和是否为空。