📅  最后修改于: 2023-12-03 14:50:32.554000             🧑  作者: Mango
双端优先队列(Double-ended priority queue)是一种可以在队列的两端添加或删除元素的数据结构,并且具有优先级的概念。
双端优先队列可以使用数组、链表、堆(优先队列)等数据结构来实现。
以下是使用 Python 语言以列表实现双端优先队列的代码片段:
class DequePriorityQueue:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def size(self):
return len(self.items)
def add_front(self, item):
self.items.insert(0, item)
def add_rear(self, item):
self.items.append(item)
def remove_front(self):
return self.items.pop(0)
def remove_rear(self):
return self.items.pop()
def peek_front(self):
return self.items[0]
def peek_rear(self):
return self.items[-1]
def enqueue(self, item, priority):
self.add_front((item, priority))
def dequeue(self):
max_priority = -1
max_index = -1
for i in range(self.size()):
if self.items[i][1] > max_priority:
max_priority = self.items[i][1]
max_index = i
return self.items.pop(max_index)[0]
此代码片段实现了一个双端优先队列,可以根据元素的优先级进行添加和删除。其中 enqueue
方法为添加元素,dequeue
方法为删除具有最高优先级的元素。