优先队列同权优先级判定
时间: 2023-12-30 09:24:06 浏览: 119
电信设备-基于研判分析和优先级判定的备用调度解决方法.zip
优先队列是一种特殊的队列,它根据元素的优先级来确定出队的顺序。当存在多个元素具有相同的优先级时,可以使用同权优先级判定来决定出队的顺序。
同权优先级判定是指在优先队列中,当多个元素具有相同的优先级时,按照先进先出(FIFO)的原则来确定出队的顺序。也就是说,先入队的元素会先出队。
下面是一个使用优先队列实现同权优先级判定的示例代码:
```python
import heapq
class PriorityQueue:
def __init__(self):
self._queue = []
self._index = 0
def is_empty(self):
return len(self._queue) == 0
def enqueue(self, item, priority):
heapq.heappush(self._queue, (priority, self._index, item))
self._index += 1
def dequeue(self):
return heapq.heappop(self._queue)[-1]
# 创建一个优先队列
pq = PriorityQueue()
# 入队
pq.enqueue('A', 1)
pq.enqueue('B', 2)
pq.enqueue('C', 1)
pq.enqueue('D', 2)
# 出队
print(pq.dequeue()) # 输出:A
print(pq.dequeue()) # 输出:C
print(pq.dequeue()) # 输出:B
print(pq.dequeue()) # 输出:D
```
在上述代码中,我们使用了`heapq`模块来实现优先队列。每个元素都包含了优先级、索引和实际的元素值。当多个元素具有相同的优先级时,索引较小的元素会先出队。
阅读全文