栈
定义
在同一端 插入 和 删除元素的 线性表就是栈
特点
先进后出,后进先出
实现方式
只允许在列表 的末尾添加和删除元素
注意: 在列表的首位也可以实现栈,但是时间复杂度较高,降低效率
class Stack():
def __init__(self):
# 初始化空列表存放元素
self.alist = []
def push(self, item):
# 将item元素 入栈
self.alist.append(item)
def pop(self):
# 将栈顶元素 出栈
if len(self.alist) == 0:
return None
else:
return self.alist.pop()
def peek(self):
# 查看栈顶元素
if self.is_empty() is True:
return None
else:
return self.alist[-1]
def is_empty(self):
# 判断栈是否为空
if len(self.alist) == 0:
return True
else:
return False
def size(self):
# 栈中元素个数
return len(self.alist)
队列(Queue)
定义
在 一段 插入元素(入队), 另一端 删除 元素 (出队)的 线性表
特点
先进先出,后进后出
实现方式
在 列表 末尾 添加 元素, 在 列表 的 首位 删除元素
class Queue(object):
def __init__(self):
self.alist = []
def enqueue(self, item):
# 将元素入队
self.alist.append(item)
def delqueue(self):
# 元素出队
if len(self.alist) == 0:
return None
else:
# 删除队头元素
return self.alist.pop(0)
def is_empty(self):
# 判断列表元素是否为空
if len(self.alist) == 0:
return True
else:
return False
def size(self):
# 返回元素个数
return len(self.alist)
q = Queue()
# 入队
q.enqueue(1)
q.enqueue(5)
# 出队
print(q.delqueue())
print(q.delqueue())
print(q.delqueue())
栈与队列,它们都是特殊的线性表,只是对插入和删除操作做了限制。
- 栈限定仅能在栈顶(同一端)进行插入和删除操作的线性表
- 队列限定只能在队尾(一端)插入,在队头(另一端)删除的线性表
- 栈:后进先出
- 队列:先进先出