优先级队列 C++ 模板实现
来源:互联网 发布:网络上好听的流行歌曲 编辑:程序博客网 时间:2024/06/11 08:53
/** File name : priority_queue.cpp* Function : 优先级队列 C++ 模板实现* Created on : 2016年5月05日* Author : beijiwei@qq.com* Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。任何单位和个人不经本人允许不得用于商业用途* **/#include <cstdio>#include <iostream>using namespace std;typedef struct {int data;int priority;}Inode;typedef struct {char data;int priority;}Cnode;template<typename T>class Pqueue {private:T array[10];int head;int tail;int size;public:bool queue_in(T one) {if (tail == 9) {return false;}for (int i = 0; i <= tail; i++) {if (i==tail) {array[i] = one;break;}elseif (one.priority < array[i].priority) {for (int j = tail + 1; j > i ; j--) {array[j] = array[j - 1];}array[i] = one;break;}}tail++;return true;}bool queue_out(T & A) {if (head == tail) {return false;}A = array[head++];return true;}bool is_empty() {return (head == tail) ? true : false;}bool get_head_obj(T & A){if (is_empty()) {return false;}else {A.data_object = array[head];return true;}}Pqueue() {for (int i = 0; i < 10; i++) {array[i].priority = 0;}head = 0;tail = 0;size = 0;}~Pqueue() {head = 0;tail = 0;size = 0;}};int main(int argc, char** argv){Pqueue<Inode> Q;Pqueue<Cnode> CQ;Inode A, B, C,D,E,F, elem ;Cnode Ca,Cb,Cc,Cd,Ce,Cf,Celem;A.data = 10;A.priority = 0;B.data = 11;B.priority = 2;C.data = 12;C.priority = 1;D.data = 13;D.priority = 5;E.data = 15;E.priority = 3;F.data = 14;F.priority = 4;Q.queue_in(A);Q.queue_in(B);Q.queue_in(C);Q.queue_in(D);Q.queue_in(E);Q.queue_in(F);Q.queue_out(elem);cout << elem.priority << endl;Q.queue_out(elem);cout << elem.priority << endl;Q.queue_out(elem);cout << elem.priority << endl;Q.queue_out(elem);cout << elem.priority << endl;Q.queue_out(elem);cout << elem.priority << endl;Q.queue_out(elem);cout << elem.priority << endl;cout << "I End" << endl;Ca.data = 'a';Ca.priority = 0;Cb.data = 'b';Cb.priority = 2;Cc.data = 'c';Cc.priority = 1;Cd.data = 'd';Cd.priority = 5;Ce.data = 'e';Ce.priority = 3;Cf.data = 'f';Cf.priority = 4;CQ.queue_in(Ca);CQ.queue_in(Cb);CQ.queue_in(Cc);CQ.queue_in(Cd);CQ.queue_in(Ce);CQ.queue_in(Cf);CQ.queue_out(Celem);cout << Celem.priority << endl;CQ.queue_out(Celem);cout << Celem.priority << endl;CQ.queue_out(Celem);cout << Celem.priority << endl;CQ.queue_out(Celem);cout << Celem.priority << endl;CQ.queue_out(Celem);cout << Celem.priority << endl;CQ.queue_out(Celem);cout << Celem.priority << endl;cout << "C End" << endl;return 0;}
0 0
- 优先级队列 C++ 模板实现
- C++模板实现优先级队列
- C++模板链表实现优先级队列
- C语言实现的优先级队列
- 【C++】优先级队列的模拟实现
- 数据结构实现(优先级队列及堆排序类模板)
- 优先级队列——用C++模板实现
- C++-优先级队列
- 优先级队列.c
- 用链表实现优先级队列
- 优先级队列实现
- 优先级队列的实现
- Java优先级队列实现
- c#实现优先级队列
- 优先级队列的实现
- 1.5 实现优先级队列
- 自己动手实现优先级队列
- java实现优先级队列
- iOS开发系列--无限循环的图片浏览器
- Linux原始套接字学习总结
- 无法解析的外部符号(或者未将对象引用设置到对象实例)
- Android Studio教程从入门到精通
- 第十、十一周项目一-点-圆-圆柱类族的设计(3)
- 优先级队列 C++ 模板实现
- failed to load applicationContext
- iOS开发系列--视图切换
- linux命令--ldconfig和ldd用法
- 知识点杂记
- scala中的下划线含义
- 设计模式之单例模式(Singleton)
- [閒聊]一個省電功能的反向思考
- 跨域名相关知识