队列的实现
2015-08-06 01:03
381 查看
/****************************************************************************
* 队列的成员数据:队列的长度,队列头,队列尾,队列中元素个数;
* 队列的成员方法:初始化,是否为空,入队,出队,获取对列中元素。
*****************************************************************************/
#include<iostream> //#define MAXSIZE 100 using namespace std; //循环队列--数组形式 template<class T> class Queue_ { private: int Max_Size; int real; int font; T* data; public: Queue_() { Max_Size=100; data=new T[Max_Size]; real=font=-1; } ~Queue_() { if(data!=NULL) { delete []data; cout<<"释放队列!"<<endl; } } bool Empty() { if(real==font) { // cout<<"队列为空!"<<endl; return true; }else{ // return false; } } bool Full() { if((real-font==Max_Size-1)||(font==real+1)) { // return true; }else{ // return false; } } int GetSize() { if(!Empty()) { return (real-font+Max_Size)%Max_Size; }else{ return 0; } } T GetFont() { try { if(Empty())throw 0; return data[font]; }catch(int e){ if(e==0)cout<<"队列为空!"<<endl; exit(-1); } } bool En_Queue(T m_data) { if(Full()) { return false; }else{ if(real==-1) { real=0; font=0; } data[real]=m_data; real=(real+1)%Max_Size; return true; } } bool Out_Queue() { if(Empty()) { return false; }else{ font=(font+1)%Max_Size; return true; } } }; int main() { int a[]={5,3,2,7,9}; Queue_<int> m_queue; if(m_queue.Empty())cout<<"队列为空!"<<endl; else cout<<"队列非空!"<<endl; if(m_queue.Full())cout<<"队列已满!"<<endl; else cout<<"队列未满!"<<endl; cout<<endl; m_queue.En_Queue(a[0]); m_queue.En_Queue(a[1]); m_queue.En_Queue(a[2]); m_queue.En_Queue(a[4]); if(m_queue.Empty())cout<<"队列为空!"<<endl; else cout<<"队列非空!"<<endl; if(m_queue.Full())cout<<"队列已满!"<<endl; else cout<<"队列未满!"<<endl; cout<<endl; cout<<"获取队列中元素个数: "<<m_queue.GetSize()<<endl; cout<<endl; cout<<"获取队列中对头元素: "<<m_queue.GetFont()<<endl; cout<<endl; if(m_queue.Out_Queue())cout<<"出队!"<<endl; cout<<endl; if(m_queue.Out_Queue())cout<<"出队!"<<endl; cout<<endl; if(m_queue.Out_Queue())cout<<"出队!"<<endl; cout<<endl; if(m_queue.Out_Queue())cout<<"出队!"<<endl; cout<<endl; cout<<"获取队列中元素个数: "<<m_queue.GetSize()<<endl; cout<<endl; //cout<<"获取队列中对头元素: "<<m_queue.GetFont()<<endl; // cout<<endl; m_queue.En_Queue(9); cout<<"获取队列中元素个数: "<<m_queue.GetSize()<<endl; cout<<endl; cout<<"获取队列中对头元素: "<<m_queue.GetFont()<<endl; cout<<endl; return 0; }
相关文章推荐
- 扩展欧几里得算法
- 最长公共子字符串(动态规划)
- Intellij IDEA 快捷键整理
- centos curl版本nss改成openssl
- 使用jquery实现点击按钮弹出层和点击空白处隐藏层
- 从PyOpenCV到CV2
- Handler、Looper、MessageQueue(一)
- POJ 1066 Treasure Hunt(计算几何)
- 从PyOpenCV到CV2
- 聊天服务器:Ejabberd 安装与离线转发模块的实现
- QEMU代码中os_daemonize()函数的理解
- 使用Jayrock开源组件开发基于JSON-RPC协议的接口
- iOS-真机调试
- 宏 宏定义
- BestCoder Round #49 Dynamic Cactus 即 hdu5342
- 对网页渲染的初步认识
- 机器学习入门-了解相关概念
- POJ - 2001Shortest Prefixes字典树记录
- Android性能优化典范
- HDOJ 3188 Just A Triangle