所谓的优先队列,其实是一个二叉树,只是这个树比较特别,小数据的结点一定在大数据的结点之上,又称“小根堆”。

  搞了几天,终于把优先队列搞定了,当然,也是这几天老是分神,QQ还是在白天设置成免打扰模式吧。

  

  以下是代码

  
View Code

 1 #ifndef PriorityLEAP_H 2 #define PriorityLEAP_H 3  4 template<class T> 5 class PriorityLeap 6 { 7 public: 8     PriorityLeap(T d){ 9         llink = NULL;10         rlink = NULL;11         plink = NULL;12         data = d;13     }14 15     void add_heap(T d)16     {17         //1.移到树叶,18 //2.向上移,直到要结点或者父结点比插入的节点大19         PriorityLeap* leaf = this;20         PriorityLeap* add = new PriorityLeap(data);21         add->data = d;22         while (leaf->llink != NULL )23         {24             leaf = leaf->llink;25         }26         leaf->llink = add;27         add->plink = leaf;28         int begin = false;29         while ( leaf != NULL && d < leaf->data ) 30         {31             leaf->llink->data = leaf->data;    32 33             if(leaf->plink ==NULL){34                 leaf->data = d;35                 begin = true;36                 break;37             }38             leaf = leaf->plink;39         }40         if(!begin)41         leaf->llink->data = d;42     }43     T removeMini_heap()44     {45         T ret = data;46 47         PriorityLeap* temp = this;48         PriorityLeap* t = NULL;49 50         while (temp && (temp->llink != NULL || temp->rlink != NULL) )51         {52             t = temp;53             if ( temp->llink == NULL ){54                 temp = temp->rlink;55             }56             else if  ( temp->rlink == NULL ){57                 temp = temp->llink;58             }59             else if ( temp->llink->data > temp->rlink->data){60                 temp = temp->llink;61             }62             else{63                 temp = temp->rlink;64             }65 66             t->data = temp->data;67             68         }69         70         return ret;71     }72     bool isEmpty()73     {74         if(llink==NULL && rlink == NULL){75             return true;76         }77         return false;78     }79 public:80     T data;81     PriorityLeap* llink;82     PriorityLeap* rlink;83     PriorityLeap* plink;84 };85 #endif

View Code

 1 int _tmain(int argc, _TCHAR* argv[]) 2 { 3     char s_a = 'a'; 4     char s_b = 'b'; 5     char s_c = 'c'; 6     char s_d = 'd'; 7     char s_e = 'e'; 8     char s_f = 'f'; 9 10     PriorityLeap<char> leap(s_f);11     leap.add_heap(s_d);12     leap.add_heap(s_e);13     leap.add_heap(s_c);14     15     for (int i = 0; i < 4; i++)16     {17         printf("priorityleap %c\n",leap.removeMini_heap());18     }19 20     system("pause");21     return 0;22 }



转载于:https://www.cnblogs.com/fox7nights/archive/2011/12/02/2272595.html

《算法与数据结构---C语言描述》优先队列相关推荐

  1. 算法与数据结构java语言描述 英文版_CVPR2020 |室内设计师失业?针对语言描述的自动三维场景设计算法...

    近日,计算机视觉顶会CVPR 2020接收论文结果公布,从6656篇有效投稿中录取了1470篇论文,录取率约为22%.在<Intelligent Home 3D: Automatic 3D-Ho ...

  2. 图十字链表并求度c语言,第5章_西安电子科技大学出版社:算法与数据结构-C语言描述(樊希平)_doc_大学课件预览_高等教育资讯网...

    第5章 数组和广义表要点: 1.掌握数组元素存储位置的换算: 2.了解特殊矩阵地存储方法和元素存储位置计算: 3.了解广义表的长度.深度.head.tail等概念和操作和存储结构. 教材习题解答: 5 ...

  3. 《数据结构、算法与应用 —— C++语言描述》学习笔记 — 优先级队列 — 左高树

    <数据结构.算法与应用 -- C++语言描述>学习笔记 - 优先级队列 - 左高树 一.左高树 1.外部节点 2.高度优先左高树 (1)定义 (2)特性 (3)HBLT 与 大小根树 3. ...

  4. 数据结构、算法与应用c++语言描述(答案)

    数据结构.算法与应用c++语言描述(答案) https://www.cise.ufl.edu/~sahni/dsaac/view.htm   本身不是计算机专业的,属于那种自学半路出家的,最近刚开始看 ...

  5. 《数据结构、算法与应用 —— C++语言描述》学习笔记 — 回溯法

    <数据结构.算法与应用 -- C++语言描述>学习笔记 - 回溯法 一.算法思想 二.货箱装载 1.问题描述 2.回溯算法 3.实现 4.测试代码 一.算法思想 回溯法是搜索问题解的一种系 ...

  6. 《数据结构、算法与应用 —— C++语言描述》学习笔记 — 竞赛树

    <数据结构.算法与应用 -- C++语言描述>学习笔记 - 竞赛树 一.赢者树 二.二叉树的数组描述(补充) 1.声明 2.实现 三.赢者树 1.抽象数据类型 2.赢者树的表示 3.声明 ...

  7. c语言用指针求Amn,[工学]第5章数据结构C语言描述耿国华.ppt

    [工学]第5章数据结构C语言描述耿国华 j=1;  for(k=1; k<=A.n; k++)  for(i=1; i<=A.len; i++) if(A.data[i].col== ...

  8. 资料 | O‘Reilly精品图书系列:算法精解 C 语言描述 (简体中文)

    下载地址:资料 | O'Reilly精品图书系列:算法精解 C 语言描述 (简体中文) 内容简介 · · · · · · 本书是数据结构和算法领域的经典之作,十余年来,畅销不衰! 全书共分为三部分:第 ...

  9. 最小生成树普里姆算法c语言代码,普里姆算法生成最小生成树-C语言描述.doc

    PAGE JIN JINGCHU UNIVERSITY OF TECHNOLOGY <数据结构(C语言描述)> 课程设计 学 院 计算机工程学院 班 级 12级软件技术1班 学 号 201 ...

最新文章

  1. 学习笔记整理之对象的转型
  2. 基础JavaScript_Day04
  3. HystrixDashbord
  4. 外挂学习之路(3)--- 内存遍历工具
  5. java 解决故意弄得错误,高效的Java错误处理
  6. 在Spring MVC流中使用rx-java Observable
  7. 图论 —— 网络流 —— 最大流 —— Dinic 算法
  8. 用 X 光检测新冠肺炎?也许孪生网络+迁移学习是更好的选择!
  9. ExtAspNet应用技巧(十四) - 系统设置
  10. java遮罩层_页面遮罩层 - javaalex的个人空间 - OSCHINA - 中文开源技术交流社区
  11. [C#][控件]列表控件listbox(一)
  12. string---substr
  13. C#扩展名关联【转】
  14. Myeclipse修改代码提示框背景色
  15. matlab模拟信号受噪声干扰分析,如何用matlab编写噪声调频干扰信号
  16. VUE后台管理中使用富文本编辑器导入word 文档进行编辑
  17. 澳洲CE毕业意向FullStackDeveloper
  18. 计算机英语教学设计反思,英语教学设计与反思
  19. 搭建jpress个人博客
  20. 各种框架性能分析,和语言性能分析

热门文章

  1. easyui datagrid 不分页_快递物流管理系统(SSM,JQUERY-EASYUI,MYSQL)
  2. mysql扩展中如何处理结果集_请写出PHP处理结果集的5个函数(使用mysql扩展)_学小易找答案...
  3. python求平均值函数_Python两个练习题,写出私信有奖
  4. 开奖|八大福利,康康你中奖了没?
  5. 本周DOT将解锁302.47万枚,上周共质押919.9万枚
  6. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期下降3.29%
  7. 台积电:无法回应检调中的案件,不评论单一客户特定订单
  8. 智慧城市、智慧园区、智慧交通、行业经营看板、运行管理大屏、图表模板、公司经营看板、大屏可视化、BI可视化模板、智慧工厂、办公、能源、餐饮、校园、人力资源、行政、汽车、房地产、保险、医院、axure原型
  9. Online Judge系统常见返回信息分析
  10. CSS 浅析position:relative/absolute定位方式