"""
队列
定义:队列是限制在两端进行插入和操作的线性表,允许存入操作的一段叫“队尾”,删除操作的一端叫“队头”
特点:队列只能在队头和队尾进行数据操作
队列模型具有先进先出的规律
思路分析:
基于列表完成数据存储
通过封装进行数据操作
确定列表的那一段作为对头
"""
class queueerror(exception):
pass
class queue:
def __init__(self):
self._queue = []
# 入队,列表尾部定义为队尾
def enqueue(self, val):
self._queue.append(val)
# 出队
def dequeue(self):
if not self._queue:
raise queueerror("queue is empty")
return self._queue.pop(0)
# 判断队列是否为空
def is_empty(self):
return self._queue == []
if __name__ == "__main__":
q = queue()
q.enqueue(10)
q.enqueue(20)
q.enqueue(30)
while not q.is_empty():
print(q.dequeue())
# 将队列中的数据倒叙加入队列中
from lstack import *
sq = queue()
ls = lstack()
for item in range(10):
sq.enqueue(item)
# 队列中的数据不为空,把数据加入栈中
while not sq.is_empty():
ls.push(sq.dequeue())
# 栈中的数据不为空,把栈中的数据加入队列
while not ls.is_empty():
sq.enqueue(ls.pop())
while not sq.is_empty():
print(sq.dequeue())