c++实现基本循环队列操作
2017-06-19 15:37
609 查看
在慕课网上学习的c++循环队列,自己也写了个实现代码。
头文件:
代码的实现
头文件:
#ifndef MYQUEUE_H #define MYQUEUE_H class MyQueue{ public: MyQueue(int queueCapacity); //InitQueue(&q) 创建队列 virtual ~MyQueue(); //DestroyQueue(&Q)销毁队列 void clearQueue(); //ClearQueue(&Q) 清空队列 bool QueueEmpty() const; //QueueEmpty(&Q) 判空队列 int QueueLength() const; //QueueLength(&Q) 判断队列长度 bool EnQueue(int element); //EnQueue(&Q, element)新元素入队 bool QueueFull() const; bool DeQueue(int &element); //DeQueue(&Q,&element)首元素出队 void QueueTraverse(); //QueueTraverse(Q,visit())遍历队列 private: int *m_pQueue; //队列数组指针 int m_iQueueLen; //队列元素个数 int m_iQueueCapacity; //队列数组容量 int m_iHead; int m_iTail; }; #endif
#include<iostream> #include "MyQueue.h" using namespace std; MyQueue::MyQueue(int queueCapacity){ m_iQueueCapacity=queueCapacity; clearQueue(); m_pQueue=new int[m_iQueueCapacity]; } MyQueue::~MyQueue(){ delete []m_pQueue; m_pQueue=NULL; } void MyQueue::clearQueue(){ m_iHead=0; m_iTail=0; m_iQueueLen=0; } bool MyQueue::QueueEmpty() const{ return m_iQueueLen==0?true:false; } int MyQueue::QueueLength() const{ return m_iQueueLen; } bool MyQueue::QueueFull() const{ return m_iQueueLen==m_iQueueCapacity?true:false; } bool MyQueue::EnQueue(int element){ if (QueueFull()) { cout<<"false"<<endl; return false; } else{ m_pQueue[m_iTail]=element; m_iTail++; m_iTail=m_iTail%m_iQueueCapacity; //循环队列,这一步很关键 m_iQueueLen++; return true; } } bool MyQueue::DeQueue(int &element){ if (QueueEmpty()) { cout<<"empty"; return false; } element=m_pQueue[m_iHead]; m_iHead++; m_iHead=m_iHead%m_iQueueCapacity; m_iQueueLen--; return true; } void MyQueue::QueueTraverse(){ for (int i=m_iHead;i<m_iQueueLen+m_iHead;i++) { cout<<m_pQueue[i%m_iQueueCapacity]<<endl; } } int main(){ MyQueue *p=new MyQueue(4); p->EnQueue(15); p->EnQueue(16); p->EnQueue(18); p->EnQueue(20); p->EnQueue(35); p->QueueTraverse(); cout<<endl; int n=0; p->DeQueue(n); p->QueueTraverse(); cout<<endl; p->clearQueue(); p->DeQueue(n); return 0; }
代码的实现
相关文章推荐
- C++实现普通队列,循环队列的基本操作(初始化,入队,出队,获取队列首元素等)
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 实现循环队列的基本操作
- c++ 队列基本操作实现
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- C++ 链队列和循环队列基本操作
- 实验4:栈和队列的基本操作实现及其应用——循环队列
- C语言实现循环队列基本操作(初始化、判断队空、入队、出队)
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 【数据结构】双向循环线性表的基本操作--C++/C实现
- C++循环队列基本操作
- 循环队列的定义、入队、出队等操作 C++代码实现
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 循环双链表基本操作C++实现
- 顺序队列的基本操作实现c++
- 顺序队列(循环队列)基本操作实现 C语言
- C++循环队列基本操作
- 循环队列的基本操作实现
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果