C/C++中的优先队列介绍

优先级队列是一种队列,其中根据分配给它们的优先级插入或删除元素,其中优先级是范围在 0-10 之间的整数值,其中 0 表示具有最高优先级的元素,10 表示具有最高优先级的元素优先级最低的元素。实现优先级队列遵循两条规则:

具有最高优先级的数据或元素将在具有最低优先级的数据或元素之前执行。如果两个元素具有相同的优先级,则它们将按照它们添加到列表中的顺序执行。

有多种可用的数据结构可用于实现优先级队列如堆栈、队列和链表。在本文中,我们将解释队列数据结构。有两种方法可以用来实现优先级队列,例如 –

在单个数组中维护多个优先级的队列

一种方法实现优先级队列就是为每个优先级维护一个队列。我们可以将这些多个队列存储在一个数组中,其中每个队列都有两个指针,即 Front 和 Rear。在队列中,Front指针用于向队列中插入元素,每当插入元素时它就加1;另一个指针是rear指针,用于从队列中删除或移除元素,每当元素插入时它就减1被从队列中删除。最后,通过两个指针的位置我们还可以确定队列中元素的数量。

C/C++中的优先队列介绍

注意 – 如果每个队列的大小相同,那么我们可以创建一个二维数组,而不是创建多个一维数组维数组。

立即学习“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] = 0End

优先级队列中插入操作的算法

delete(queue)   Set flag = 0, priority = 0      While priority 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 +EndIf flag = 0   Print underflowElse   Return valueEnd

以上就是C/C++中的优先队列介绍的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445137.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:13:31
下一篇 2025年12月8日 02:09:12

相关推荐

  • C中的位域

    在本节中,我们将了解什么是 C 语言中的位字段。 假设您的 C 程序包含许多 TRUE/FALSE 变量,这些变量分组在称为状态的结构中,如下 – struct { unsigned int widthValidated; unsigned int heightValidated;} s…

    2025年12月17日
    000
  • 在C语言中,卫生宏

    这里我们将看到 C 中的卫生宏。我们知道 C 中宏的用法。但有时,由于意外捕获标识符,它不会返回预期的结果。 如果我们看到下面的代码,我们可以看到它无法正常工作。 示例 #include#define INCREMENT(i) do { int a = 0; ++i; } while(0)main(…

    2025年12月17日
    000
  • 暴风雨数字

    For N to be a stormer number, the highest prime factor of the expression N^2+1 must be greater than or equal to 2*N and it should be a positive intege…

    2025年12月17日
    000
  • 李彦宏重提“车水马龙”,称AI会给人类创造更多机会

    两个月前,百度文心一言被首批用户体验时所创作的《车、水、马、龙》画作,在一夜之间火遍网络,“车”、“水”、“马”、“龙”四个风马牛不相及的事物堆叠在一起的画面,确实有些天真烂漫。几乎在短短的一夜之间,文心一言完成了更新迭代,并成功地通过图像诠释了深奥广泛的汉语成语“车水马龙”。 两个月后的5月18日…

    2025年11月9日 科技
    000

发表回复

登录后才能评论
关注微信