"""
链式队列
思路分析:
基于链表构建队列模型
链表的开端作为对头,结尾位置作为队尾
单独定义队尾标记,避免每次插入数据遍历
队头和队尾重叠认为队列为空
"""
class QueueError(Exception):
pass
class Node:
def __init__(self, val, next=None):
self.val = val
self.next = next
class LQueue:
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.front == self.rear:
raise QueueError("Queue is empty")
self.front = self.front.next
return self.front.val
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45