"""
lqueue.py 链式队列
重点代码
思路分析:
1. 基于链表构建队列模型
2. 链表的开端作为队头,结尾位置作为对尾巴
3. 单独定义队尾标记,避免每次插入数据遍历
4. 队尾和队头重叠认为队列为空
"""
class QueueError(Exception):
"""
自定义异常
"""
pass
class Node:
"""
节点类
"""
def __init__(self, val, next=None):
self.val = val
self.next = next
class LQueue:
"""
队列操作
1. 基于链表构建队列模型
2. 链表的开端作为队头,结尾位置作为对尾巴
3. 单独定义队尾标记,避免每次插入数据遍历
4. 队尾和队头重叠认为队列为空
"""
def __init__(self):
self.front = self.rear = Node(None)
def is_empty(self):
return self.front == self.rear
def enqueue(self, val):
# 入队
self.rear.next = Node(val)
self.rear = self.rear.next
def dequeue(self):
# 出队
if self.is_empty():
raise QueueError('Queue is empty')
self.front = self.front.next
return self.front.val
def top(self):
# 查看栈顶元素
if self.is_empty():
raise QueueError('Queue is empty')
return self.front.next.val
if __name__ == '__main__':
lq = LQueue()
lq.enqueue(12)
lq.enqueue(13)
lq.enqueue(14)
print(lq.dequeue())
print(lq.dequeue())
print(lq.top())
python 链式队列lqueue
最新推荐文章于 2022-11-02 17:38:05 发布