转载:http://blog.sina.com.cn/s/blog_ac9fdc0b0101l1md.html
优先队列:BinomialQueue二项队列
(2013-04-04 22:12:31)**********************************************************************************************
树的标准表示方法:每个结点的儿子都在一个链表中,而且每个结点都有一个指向它的第一个儿子和右兄弟。
底层如下所示:
下面是整个类型的架构:
********************************************************************************************
先是构造函数,设置了多种构造函数,其中单参数的是位于push中调用merge
然后是拷贝构造函数和=的重载,调用底层的copy,和查找二叉树操作很像:
再就是merge,非常nice的一段代码:
这两个函数辅助merge的完成:
这里面参数的传递,和最后将Node设置为NULL,都是很要技巧的~~~值得多体会啊
然后是一连续的公共函数,基于merge
删除函数还是比较的困难,需要考虑一堆边界条件,最后在调试中不断的完善:
然后是清空函数,和查找树一样的方法,实在没啥好说地:
*********************************************************************************************
测试代码:
结果很nice:
**********************************************************************************************