堆栈是一种数据项按序排列的数据结构,具有“后进先出”(LIFO)的特点,堆栈所有的操作都在其顶端执行,在顶端进行插入和移除。
堆栈好比我们常见的羽毛球盒子,一个圆柱体的羽毛球盒子中从上到下装了很多羽毛球,盒子的开口在顶端,这样,如果先放入盒子的羽毛球就会在盒子的下面,取出时就会后拿到,如果后放入盒子的羽毛球就会在盒子的上面,取出时就会先拿到。
在Python中,实现堆栈有两种方式:列表结构、链表结构
我下面通过代码分别展示两种堆栈的实现,由于堆栈既可以是定容(容量)的,又可以是变容(容量)的,所以我使用列表结构来实现了定容堆栈,用链表结构来实现了变容堆栈。
一、列表结构(定容)
class ListStack:
"""列表结构堆栈类"""
def __init__(self):
"""初始化堆栈的属性"""
self.max_stack = 10 # 定义堆栈的容量
self.stack = [None] * self.max_stack # 声明堆栈列表
self.top = -1 # 堆栈的顶端,-1表示堆栈为空
def is_empty(self):
"""判断堆栈是否为空"""
if self.top == -1:
return True
else:
return False
def push(self, data):
"""向堆栈中存入数据"""
if self.top >= self.max_stack - 1:
print(&