[数据结构]Priority_queue(优先级队列)
2016-04-30 22:15
337 查看
//.h const int MAX_LEN = 100; template<class List_entry> class p_queue { public: p_queue(); bool full(); bool empty(); int size(); void clear(); void insert(const List_entry ¤t); void remove(); void creation(); void print(); private: int count; List_entry entry[MAX_LEN]; void insert_heap(const List_entry ¤t, int low, int high); };
//.cpp #include<iostream> #include"p_queue.h" using namespace std; template<class List_entry> p_queue<List_entry>::p_queue() { count = 0; } template<class List_entry> bool p_queue<List_entry>::full() { return count==MAX_LEN; } template<class List_entry> bool p_queue<List_entry>::empty() { return count==0; } template<class List_entry> int p_queue<List_entry>::size() { return count; } template<class List_entry> void p_queue<List_entry>::clear() { count = 0; } template<class List_entry> void p_queue<List_entry>::insert(const List_entry ¤t) { entry[size()] = current; count++; creation(); } template<class List_entry> void p_queue<List_entry>::insert_heap(const List_entry & current, int low, int high) { int large = 2 * low + 1; while (large <= high) { if (large < high&&entry[large] < entry[large + 1]) large++; //将下标large调整为最大孩节点 if (entry[large] < current)break; else { //promote entry[large] entry[low] = entry[large]; low = large; large = 2 * low + 1; } } entry[low] = current; } template<class List_entry> void p_queue<List_entry>::remove() { for (int i = 0; i < size()-1; i++) { entry[i] = entry[i + 1]; } count--; creation(); } template<class List_entry> void p_queue<List_entry>::creation() { for (int low = count / 2 - 1; low >= 0; low--) { List_entry current = entry[low]; insert_heap(current, low, count - 1); } } template<class List_entry> void p_queue<List_entry>::print() { for (int i = 0; i < size(); i++) cout << entry[i] << ' '; cout << endl; }
相关文章推荐
- [数据结构]Radix_sort(MSD)
- 数据结构与逻辑代码(一)
- 数据结构(c)——二叉树
- BZOJ 1208 平衡树Treap模版题
- Python全栈开发之2、运算符与基本数据结构
- HDU 4747 线段树+思维
- 数据结构相同情况下数据表之间数据的快速"copy"
- C++数据结构
- 数据结构-Trie树
- 查找 -数据结构
- 查找 -数据结构
- 数据结构修改后,序列化到本地的数据读取错误
- 【数据结构与算法】十五 平衡二叉树
- Java千百问_06数据结构(002)_java有哪8种基本数据类型
- Java千百问_06数据结构(001)_java中数据类型是什么
- springmvc中的RequestBody自动注入List, Map, String数据结构的数据
- 链表的倒序打印
- poj 初级训练计划数据结构总结
- 一、hbase的核心数据结构
- 数据结构与算法分析(1)引论