c-queue?
2013-11-06 09:59
316 查看
#include <cstdlib> #include <iostream> using namespace std; template <class T> class Queue { public: // 队列的运算集 void clear(); // 变为空队列 bool enQueue(const T& item); // item入队,插入队尾,成功则返回真否则返回假 bool deQueue(T& item); // 返回队头元素并从队列中删除,成功则返回真 bool front(T& item); // 返回队头元素,但不删除,成功则返回真 bool isEmpty(); // 返回真,若队列已空 bool isFull(); // 返回真,若队列已满 } template <class T> class arrQueue: public Queue<T> { private: int mSize; // 存放队列的数组的大小 int front; // 表示队头所在位置的下标 int rear; // 表示队尾所在位置的下标 T *qu; // 存放类型为T的队列元素的数组 public: // 队列的运算集 arrQueue(int size) { // 创建队列的实例 mSize = size +1; // 浪费一个存储空间,以区别队列空和队列满 qu = new T[mSize]; front = rear = 0; } ~arrQueue() { // 消除该实例,并释放其空间 delete [] qu; } void clear() { // 清空队列 front = rear; } bool enQueue(const T item) { // item入队,插入队尾 if (((rear + 1 ) % mSize) == front) { cout << "队列已满,溢出" << endl; return false; } qu[rear] = item; rear = (rear +1) % mSize; // 循环后继 return true; } bool deQueue(T*item) { // 返回队头元素并从队列中删除 if ( front == rear) { cout << "队列为空" << endl; return false; } *item = qu[front]; front = (front +1) % mSize; return true; } bool getFront(T* item) { // 返回队头元素,但不删除 if (front == rear) { cout << "队列为空" << endl; return false; } *item = qu[front]; return true; } void print() { // 返回队头元素,但不删除 if (front == rear) { cout << "队列为空" << endl; } int p = front; while(p != rear ) { cout << qu[p] << " "; p =( p + 1) % mSize; } cout << endl; } }; int main(int argc, char *argv[]) { arrQueue<int> *tst; tst = new arrQueue<int>(10); int n,r ; cin >> n; while (n>0) { tst->enQueue(n); n--; } tst->print(); cin >> n; tst->deQueue(&r); cout << "deleted is : " << r << endl; tst->getFront(&r); cout << "front is : " << r << endl; tst->print(); cin >> n; }
相关文章推荐
- 540 - Team Queue***
- 标准模板库(STL)之 priority_queue 列传
- The FastCGI pool queue is full 的错误 解决
- leetcode 232. Implement Queue using Stacks-栈模拟队列
- java.util.concurrent.LinkedBlockingQueue
- Android中关于Volley的使用(五)从RequestQueue开始来深入认识Volley
- Handler+Looper+MessageQueue深入详解案例
- Leetcode题解 232. Implement Queue using Stacks
- [iOS]使用Audio Queue Services 播放和录制音频
- 算法Sedgewick第四版-第1章基础-011一用链表实现bag、queue、stack
- dispatch_async 与 dispatch_get_global_queue (多线程)
- 队列Queue
- kqueue epoll 边界触发模式的网络编程模型
- 队列(Queue)
- STL源码剖析学习七:stack和queue
- FMDB-FMDatabaseQueue
- 泛型类:Queue
- ConcurrentLinkedQueue的实现原理分析
- Multi-Queue Replacement Algorithm
- uva 1594 Ducci Sequence <queue,map>