基础数据结构:栈、队列——Python实现
上一节我们重点介绍了数据结构的顺序与链式存储结构,那么这次我们来实现一下栈和队列这两种最基础的线性逻辑结构。
对栈和队列最简单的描述,也是它们最核心的性质,就是:
- 栈 —— 后进先出
- 队列 —— 先进先出
一个简单的比喻就是:
栈像是将书一本本依次平摞在一个箱子里,后放入箱子的将先被拿出。
队列就如排队,先来排队的人先被接待。
这是逻辑上的两种数据结构,对应我们前面所讲的顺序表和链表两种存储结构,我们在编程实现数据结构时又可以通过继承以上两种表,派生出顺序栈、顺序队列、链式栈、链式队列。或者单独实现栈和队列的基类,通过多重继承(c++\Python)或者组合(Java)两两结合得出以上四种数据结构。
使用Python的list实现顺序栈和顺序队列十分简单,我们只需要继承上一节中的顺序表,再添加一个出栈或出队列的函数即可:
# 基类:顺序表
class List:
def __init__(self):
self.list = []
def __str__(self):
return str(self.list)
def put(self, item):
self.list.append(item)
def size(self):
return len(self.list)
def isEmpty(self):
return self.list == []
# 子类:顺序栈
class ListStack(List):
def pop(self):
if self.isEmpty():
return None
else: