C++中 循环队列的简单封装
2014-08-20 19:13
246 查看
/******************* * queue * * *****************/ #include <iostream> using namespace std; /*******************定义结构********************************************/ class Queue { public: Queue(int capacity = 3); virtual ~Queue(); bool en_queue(int v);//返回是否入队列成功 bool de_queue(int *p = NULL);//返回出队是否成功,成功则返回p[变相返回] bool empty();//布尔型判断是否空队列 bool full(); int size();//当前队列大小 private: int * pdata; int capacity; int first; int last; }; /*******************构造函数********************************************/ Queue::Queue(int capacity) { this->capacity = capacity; pdata = new int[capacity]; first = 0; last = 0; } /*******************析构函数********************************************/ Queue::~Queue() { if(NULL!=pdata) { delete [] pdata; } pdata = NULL; } /*******************入队函数********************************************/ bool Queue::en_queue(int v) { if(full()) { cout<<"queue is full\n"; return false; } pdata[last++] = v; // last%= capacity;//循环赋值 cout<<"en_queue "<<pdata[last-1]<<endl; } /*******************出队函数********************************************/ bool Queue::de_queue(int * p) { if(empty()) { cerr<<"queue is empty."<<endl; return false; } if(p!=NULL) { *p = pdata[last-1];//将出队的数值保存,变相返回 } cout<<"de_queue "<<pdata[last-1]<<endl; last--; return true; } /*******************判空函数********************************************/ bool Queue::empty() { if(first==last) { return true; } return false; } /*******************判满函数********************************************/ bool Queue::full() { if((last+1)%capacity==first) { return true; } return false; } /*******************测试函数********************************************/ int main(int argc,char **argv) { Queue s; int i = 0; s.en_queue(1); s.de_queue(); s.en_queue(2); s.en_queue(3); s.en_queue(4); s.en_queue(5); s.en_queue(6); s.en_queue(7); cout<<endl<<endl; for(;i<7;i++) { s.de_queue(); } return 0; }
本文出自 “咙叮咚员外” 博客,请务必保留此出处http://lddyw.blog.51cto.com/4151746/1542695
相关文章推荐
- 一个简单封装用户命令的C++程序
- c++ 数据封装模式之一: 简单工厂模式
- C++ 读写文件的简单封装
- 一种基于简单递归思想的易操控xml解析封装(C++)
- C++ 简单封装socket类包含TCP和UDP基本通信能力
- WebBrowser Control的一个简单C++封装
- C++封装一个简单的线程类
- c++关于封装、接口的简单理解
- (转)WebBrowser Control的一个简单C++封装
- C++简单封装互斥量
- c++ 数据封装模式之一: 简单工厂模式
- 用C++简单封装了一下SQLite
- 用C++封装了一个简单的“按钮”类
- C++简单封装pthread
- C++ 简单封装socket类包含TCP和UDP基本通信能力
- WebBrowser Control的一个简单C++封装
- c++仿java简单封装
- MYSQL的简单封装,学习基于托管的C++开发
- C++中 栈的简单封装
- C++ 操作Redis 简单封装类