12 - 堆栈 - 数组实现堆栈
发布人:shili8
发布时间:2025-01-16 21:30
阅读次数:0
**堆栈数据结构**
堆栈是一种线性数据结构,遵循后进先出的原则。它类似于一叠盘子,每次添加或删除元素都在栈顶。
### 堆栈的基本操作1. **push**: 将元素添加到栈顶。
2. **pop**: 移除栈顶元素。
3. **peek**: 查看栈顶元素,但不移除。
4. **isEmpty**: 检查栈是否为空。
### 数组实现堆栈我们可以使用数组来模拟堆栈的行为。下面是基于数组的堆栈实现:
class ArrayStack: def __init__(self, max_size): """ 初始化堆栈,指定最大容量。 :param max_size: 堆栈的最大容量。 """ self.max_size = max_size self.top = -1 # 栈顶指针 self.array = [None] * max_size # 数组实现堆栈 def push(self, element): """ 将元素添加到堆栈顶部。 :param element: 要添加的元素。 """ if self.top == self.max_size -1: raise Exception("堆栈已满") self.top +=1 self.array[self.top] = element def pop(self): """ 移除堆栈顶部元素,并返回其值。 :return: 堆栈顶部元素的值。 """ if self.isEmpty(): raise Exception("堆栈为空") value = self.array[self.top] self.array[self.top] = None self.top -=1 return value def peek(self): """ 查看堆栈顶部元素,但不移除。 :return: 堆栈顶部元素的值。 """ if self.isEmpty(): raise Exception("堆栈为空") return self.array[self.top] def isEmpty(self): """ 检查堆栈是否为空。 :return: True表示堆栈为空,False表示堆栈非空。 """ return self.top == -1
### 堆栈的使用示例
# 创建一个最大容量为5 的堆栈stack = ArrayStack(5) # 将元素添加到堆栈中stack.push(10) stack.push(20) stack.push(30) # 查看堆栈顶部元素print(stack.peek()) # 输出:30# 移除堆栈顶部元素print(stack.pop()) # 输出:30# 检查堆栈是否为空print(stack.isEmpty()) # 输出: False# 将元素添加到堆栈中stack.push(40) # 检查堆栈是否已满try: stack.push(50) except Exception as e: print(e) # 输出: 堆栈已满
### 总结本文介绍了堆栈数据结构的基本概念和操作,展示了如何使用数组实现堆栈。通过阅读本文,你应该能够理解堆栈的基本原理,并且能够使用数组来模拟堆栈的行为。