堆实现的优先队列模板.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
堆实现的优先队列模板 Posted on?2010-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 25500 typedef?struct?RedType { ????int?left, right; ????int?weight; ????bool?friend?operator (const?RedType a, const?RedType b) { ????????return?a.weight b.weight; ????} }Edge; ????? class?priority_queue { private?: ????RedType r[MAXN]; ????int?length; ????? ????void?heap_adjust(int?s, int?m) { ????????RedType rc = r[s]; ????????for?(int?j = s 1; j = m; j = 1) { ????????????if?(j m r[j] r[j+1]) j++; ????????????if?(!(rc r[j])) break; ????????????r[s] = r[j]; s = j; ????????} ????????r[s] = rc; ????} ????? public?: ????priority_queue() { ????????length = 0; ????} ????/*===========下面是堆操作部分,建堆,堆排等=============*/ ????? ????void?creat_heap() { ????????for?(int?i = length 1; i 0; i--) { ????????????heap_adjust(i, length); ????????} ????} ????? ????void?set_size(int?length) { ????????this-length = length; ????} ????? ????void?set_value(int?id, RedType value) { ????????r[id] = value; ????} ????? ????void?heap_sort() { ????????for?(int?i = length; i 1; i--) { ????????????RedType tmp = r[1]; ????????????r[1] = r[i]; ????????????r[i] = tmp; ????????????heap_adjust(1, i - 1); ????????} ????} ????? ????bool?is_heap() { ????????int?len = length 1 - 1, j; ????????if?(len 1) { ????????????if?(length == 1 || (!(r[1] r[length]) ???????????? !(r[1] r[length - 1]))) ????????????????return?true; ????????????return?false; ????????} ????????for?(int?i = 1; i = len; i++) { ????????????j = i 1; ????????????if?(r[j] r[j + 1]) j++; ????????????if?(r[i] r[j]) return?false; ????????} ????????return?true;

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档