堆实现的优先队列模板.doc_第1页
堆实现的优先队列模板.doc_第2页
堆实现的优先队列模板.doc_第3页
堆实现的优先队列模板.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

堆实现的优先队列模板Posted on2010-12-23 21:25¥忘%风阅读(1308) 评论(0)编辑收藏下面是自己手写的优先队列模板(默认是大顶堆,可通过重载小于号改变)用法说明如下:1)priority_queue部分(用法参照stl)c-free库函数帮助里提供的priority_queue用法说明如下:C+优先队列类似队列,但是在这个数据结构中的元素按照一定的断言排列有序。empty()如果优先队列为空,则返回真pop()删除第一个元素push()加入一个元素size()返回优先队列中拥有的元素的个数top()返回优先队列中有最高优先级的元素2)堆的基本堆操作部分。用法如下:set_size()设置堆的大小set_value()设置堆中第id个元素的值creat_heap()创建一个初始堆heap_sort()堆排序,默认从小到大排,可通过重载小于号实现按指定规则排序is_heap()判断是否构成一个堆模板如下:?#define MAXN 25500typedefstructRedType intleft, right;intweight;boolfriendoperator b.weight;Edge;classpriority_queue private:RedType rMAXN;intlength;voidheap_adjust(ints, intm) RedType rc = rs;for(intj = s 1; j = m; j = 1) if(j m & rj rj+1) j+;if(!(rc 1; i 0; i-) heap_adjust(i, length);voidset_size(intlength) this-length = length;voidset_value(intid, RedType value) rid = value;voidheap_sort() for(inti = length; i 1; i-) RedType tmp = r1;r1 = ri;ri = tmp;heap_adjust(1, i - 1);boolis_heap() intlen = length 1 - 1, j;if(len 1) if(length = 1 | (!(r1 rlength) & !(r1 rlength - 1)returntrue;returnfalse;for(inti = 1; i = len; i+) j = i 1;if(rj rj + 1) j+;if(ri 1;for(intj = length; j 1; j = 1) if(!(rs = 1;voidpop() RedType tmp = r1;r1 = rlength;rlength = tmp;heap_adjust(1, -length);RedType top() returnr1; intsize() returnlength;boolempty() if(length 根节点不断做heap_adjust(),使之构成一个初始堆。-n / 2 * log(n)heap_sort() 相当于重复n次pop()操作,但length不改变。-n * log(n)is_heap() 判断是否构成堆,堆大小小于4时由外面的if判定,避免for

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论