队列篇(一)----环形队列的创建与检测(C++版)
来源:互联网 发布:小米3怎么用4g网络 编辑:程序博客网 时间:2024/05/29 15:49
创建类声明文件文件 MyQueue.h
class MyQueue{
public:
MyQueue(int queueCapacity); //创建队列
virtual ~MyQueue(); //销毁队列
void ClearQueue(); //清空队列
bool QueueEmpty() const; //判空队列
int QueueLength() const; //检测队列长度
bool QueueFull() const; //判定队列是否为满
bool EnQueue(int element); //新元素入队
bool DeQueue(int &element); //首元素出队
void QueueTraverse(); //遍历队列
private:
int *m_pQueue; //队列数组指针
int m_iQueueLen; //队列元素个数
int m_iQueueCapacity; //队列数组容量
int m_iHead; //队列头
int m_iTail; //队列尾
};
创建类定义文件 MyQueue.cpp
#include "MyQueue.h"
#include<iostream>
using namespace std;
MyQueue::MyQueue(int queueCapacity){
m_iQueueCapacity = queueCapacity;
m_pQueue = new int[m_iQueueCapacity]; //动态创建一个规定容量的数组
ClearQueue(); //初始时,元素个数,头队列,尾队列都为0,可调用清空队列函数
}
MyQueue::~MyQueue(){
delete[]m_pQueue; //删除动态数组
m_pQueue = NULL;
}
void MyQueue::ClearQueue(){
m_iHead = 0;
m_iTail = 0;
m_iQueueLen = 0;
}
bool MyQueue::QueueEmpty()const{
if (m_iQueueLen == 0){
return true;
}
else{
return false;
}
}
int MyQueue::QueueLength()const{
return m_iQueueLen;
}
bool MyQueue::QueueFull()const{
if (m_iQueueLen == m_iQueueCapacity){
return true;
}
else{
return false;
}
}
bool MyQueue::EnQueue(int element){
if (QueueFull()){
return false;
}
else{
m_pQueue[m_iTail] = element;
m_iTail++;
m_iTail = m_iTail%m_iQueueCapacity; //核心:这里取容量的余数,为了实现循环遍历成一个环形,达到数组容量时,又置为0
m_iQueueLen++; //队列元素个数加一
return true;
}
}
bool MyQueue::DeQueue(int &element){
if (QueueEmpty()){
return false;
}
else{
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; i++){ //循环从队列头开始,执行队列长度次,到达队列尾
cout << m_pQueue[i%m_iQueueLen] << endl; //输出按环形队列输出
}
}
创建测试文件 demo.cpp
#include<iostream>
#include<stdlib.h>
#include"MyQueue.h"
int main(void){
MyQueue *p = new MyQueue(4); //新建一个空间大小为四的环形队列
p->EnQueue(10); //给环形队列添加两个整数10,12
p->EnQueue(12);
p->QueueTraverse(); //循环遍历输出,显示10,12
}
#include<stdlib.h>
#include"MyQueue.h"
int main(void){
MyQueue *p = new MyQueue(4); //新建一个空间大小为四的环形队列
p->EnQueue(10); //给环形队列添加两个整数10,12
p->EnQueue(12);
p->QueueTraverse(); //循环遍历输出,显示10,12
}
阅读全文
0 0
- 队列篇(一)----环形队列的创建与检测(C++版)
- 顺序队列(环形队列)
- (五)环形队列
- 队列篇(二)----环形队列的应用(C++版)
- 震惊篇(一)——如何通过面向对象的思想实现环形队列
- 环形队列,用tag来标记队列的空(0)与满(1)
- C语言 环形队列
- 数据结构——环形队列的原理(模拟环形队列)
- C语言实现的环形队列
- 第七周项目一(顺序环形队列算法库)
- 环形队列的定义与操作
- 环形队列的应用
- 环形队列的实现
- 第七周-栈和队列(二)项目一-建立顺序环形队列算法库
- 【c++】环形队列类模板
- 数据结构教程(第四版)P82~84//环形队列
- 环形队列串口(发)应用
- 环形队列串口(收)应用
- mysql自定义删除数据
- 极管之——PNP与NPN
- 根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法
- POJ 1511
- mac 安装 tensorflow
- 队列篇(一)----环形队列的创建与检测(C++版)
- 最大团问题
- Java后台框架篇--Spring实现AOP的4种方式
- Sticks and Right Triangle HDU
- String内存位置、StringBuffer、StringBuilder区别
- 程序,进程,作业之间的区别和联系
- android、电脑可以播放.mp4的视频,ios无法播放解决办法
- map的基本操作和使用
- oracle之 关闭透明大页