转载:优先队列:BinomialQueue 二项队列

本文介绍了二项队列的数据结构,包括其基本概念、操作特性及实现细节。二项队列作为优先队列的一种高效实现方式,支持合并、插入、删除等操作,且这些操作的时间复杂度在最坏情况下为O(logN)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载:http://blog.sina.com.cn/s/blog_ac9fdc0b0101l1md.html


优先队列:BinomialQueue二项队列

  (2013-04-04 22:12:31)
标签: 

杂谈

分类: 数据结构
       二项队列同样支持合并,插入,删除,每次操作的最坏情形运行时间为O(logN),而插入操作平均花费常数时间。
       二项队列是堆序的集合,称为森林。堆序树中的每一颗都是有约束的形式,叫作二项树。
优先队列:BinomialQueue二项队列
**********************************************************************************************
树的标准表示方法:每个结点的儿子都在一个链表中,而且每个结点都有一个指向它的第一个儿子和右兄弟。
底层如下所示:
优先队列:BinomialQueue二项队列 
下面是整个类型的架构:
优先队列:BinomialQueue二项队列 
********************************************************************************************
先是构造函数,设置了多种构造函数,其中单参数的是位于push中调用merge
优先队列:BinomialQueue二项队列 
然后是拷贝构造函数和=的重载,调用底层的copy,和查找二叉树操作很像:
优先队列:BinomialQueue二项队列 
再就是merge,非常nice的一段代码:
优先队列:BinomialQueue二项队列
优先队列:BinomialQueue二项队列
优先队列:BinomialQueue二项队列
这两个函数辅助merge的完成:
优先队列:BinomialQueue二项队列 
这里面参数的传递,和最后将Node设置为NULL,都是很要技巧的~~~值得多体会啊
然后是一连续的公共函数,基于merge
优先队列:BinomialQueue二项队列 
删除函数还是比较的困难,需要考虑一堆边界条件,最后在调试中不断的完善:
优先队列:BinomialQueue二项队列 
然后是清空函数,和查找树一样的方法,实在没啥好说地:
优先队列:BinomialQueue二项队列 
*********************************************************************************************
测试代码:
优先队列:BinomialQueue二项队列 
结果很nice:
优先队列:BinomialQueue二项队列 
**********************************************************************************************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值