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

转载: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二项队列 
**********************************************************************************************
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值