循环队列的一个简单实现
2009-10-07 03:40
393 查看
这是笔试中遇到的一道题,要求实现循环队列,有入队,出队,判断是否为空,是否满等操作。
分析:
可以使用一个数组来存放循环队列,队头标记与队尾标记初始都为0,入队操作即队尾标记加1,若加1后相对循环等于队头则上溢;出队操作即队头标记加1,若加1后相对循环等于队尾则下溢;若队头标记等于队尾标记则为空;若队尾标记加1相对循环等于队头则为满。
具体实现如下:
分析:
可以使用一个数组来存放循环队列,队头标记与队尾标记初始都为0,入队操作即队尾标记加1,若加1后相对循环等于队头则上溢;出队操作即队头标记加1,若加1后相对循环等于队尾则下溢;若队头标记等于队尾标记则为空;若队尾标记加1相对循环等于队头则为满。
具体实现如下:
template class CirQueue { public: enum {maxSize = 100}; CirQueue() { front = rear = 0; } ~CirQueue(){ } void EnQueue(T x){ // 入队 if ((rear+1) % maxSize == front) throw "上溢"; rear = (rear+1) % maxSize; data[rear] = x; } T DeQueue(){ // 出队 if (rear == front) throw "下溢"; front = (front+1) % maxSize; return data[front]; } bool IsEmpty(){ return (front == rear) ? true : false; } bool IsFull(){ return ((rear+1)%maxSize == front) ? true : false; } private: int front, rear; T data[maxSize]; };
相关文章推荐
- [原创][Java]一个简单高效的线程安全队列的JAVA实现
- 一个简单的队列实现
- 自己实现一个简单的优先队列-二叉堆
- 如何实现一个循环队列
- 如何实现一个循环队列
- 循环数组实现一个队列
- 实现循环队列为什么要使用一个空的数据位
- 数据结构学习三(一个简单的队列实现)
- 要求顺序循环队不损失一个空间,全部能够得到有效利用,试采用设置标志位tag的方法解决“假溢出”问题,实现顺序循环队列算法
- 循环队列简单实现
- C#实现一个简单的工作队列调度器
- 两个队列实现一个栈(两个队列循环)
- 数据结构 --静态队列的一个简单的C语言代码实现
- 简单算法 - 用两个栈实现一个队列
- 链表实现的简单循环队列
- Java循环队列简单实现
- C++编程练习(5)----“实现简单的循环队列的顺序存储结构“
- 用C语言实现简单循环队列结构
- 数据结构(C实现)------- 顺序队列(循环队列之少用一个存储空间实现) .
- 数据结构学习之路(四)用数组简单实现循环队列