优先级队列是一种队列,其中根据分配给它们的优先级插入或删除元素,其中优先级是范围在 0-10 之间的整数值,其中 0 表示具有最高优先级的元素,10 表示具有最高优先级的元素优先级最低的元素。实现优先级队列遵循两条规则:
有多种可用的数据结构可用于实现优先级队列如堆栈、队列和链表。在本文中,我们将解释队列数据结构。有两种方法可以用来实现优先级队列,例如 -
一种方法实现优先级队列就是为每个优先级维护一个队列。我们可以将这些多个队列存储在一个数组中,其中每个队列都有两个指针,即 Front 和 Rear。在队列中,Front指针用于向队列中插入元素,每当插入元素时它就加1;另一个指针是rear指针,用于从队列中删除或移除元素,每当元素插入时它就减1被从队列中删除。最后,通过两个指针的位置我们还可以确定队列中元素的数量。

注意 - 如果每个队列的大小相同,那么我们可以创建一个二维数组,而不是创建多个一维数组维数组。
立即学习“C++免费学习笔记(深入)”;
insert(queue, data, priority)
If(queue->Rear[priority] = MAX-1 AND queue->Front[priority] = 0) OR (queue->Rear[priority] +1 =queue->Front[priority])
Print Overflow
End
IF queue->Rear[priority - 1] = MAX-1
Set queue->Rear[priority - 1] = 0
Else
Set queue->Rear[priority] = queue->Rear[priority - 1] +1
End
Set queue->CQueue[priority - 1] [queue->Rear[priority - 1] = data
IF queue->Front[priority - 1] = -1
Set queue->Front[priority - 1] = 0
Enddelete(queue)
Set flag = 0, priority = 0
While priority <= MAX-1
IF NOT queue->Front[priority] = -1
Set flag = 1
Set value = queue->CQueue[priority][queue->Front[priority]]
IF queue->Front[priority] = queue->Rear[priority]
Set queue->Front[priority] = queue->Rear[priority] = -1
Else
IF queue->Front[priority] = MAX-1
Set queue->Front[priority] = 0
Else
Set queue->Front[priority] = queue->Front[priority] + 1
End
End
Break
End
Set priority = priority +
End
If flag = 0
Print underflow
Else
Return value
End以上就是C/C++中的优先队列介绍的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号