数据结构之循环队列(面向对象思想c++实现)
来源:互联网 发布:电脑桌面软件大全 编辑:程序博客网 时间:2024/06/05 20:47
队列是一种数据结构,它具有先进先出的特点,即FIFO(first in first out)。队列一般有普通队列和循环队列两种形式。我们用数组来实现队列,使用一般的普通队列,当我们把队头元素out的时候,队头后的元素会逐一向前挪动,这样就大大降低了处理效率。
循环队列不仅提高了效率,而且也提升了空间利用率。循环队列的具体构造如下图。
接下来,我们先定义循环队列中的属性和方法,然后重点分析两个方法。在此声明,我们用数组来实现一个队列,且该数组为int类型数组。
循环队列的具体代码如下:
class MyQueue{public: MyQueue(int queueCapacity); //初始化构建循环队列 virtual ~MyQueue(); //销毁队列 void ClearQueue(); //清空队列 bool QueueEmpty() const; //判断队列是否为空 bool QueueFull(); //判断队列是否为满 int QueueLength() 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; //队尾};
#include 'MyQueue'#include <iostream>using namespace std;MyQueue::MyQueue(int queueCapacity){ m_iQueueCapacity = queueCapacity; m_pQueue = new int[m_iQueueCapacity]; ClearQueue();}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(0 == m_iQueueLen){ return true; } else{ return false; }}int MyQueue::QueueLength() const{ return m_iQueueLen;}bool MyQueue::QueueFull(){ return m_iQueueLen == queueCapacity ? true : false;}bool MyQueue::EnQueue(int element){ if (QueueFull()) { return 0; } 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()) { 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_iQueueCapacity]<<endl; }}
我们详解EnQueue(int element)方法(DeQueue(int &element)同理)中的一个重点。
EnQueue(int element):
其中我们每向队列中添加一个元素的时候,m_iTail就会加1,这样下去m_iTail就会无限制的继续变大,而此时我们的处理办法就是m_iTail = m_iTail % m_iQueueCapacity,这样每当m_iTail指向超过m_iQueueCapacity的时候,就会得到纠正。
阅读全文
0 0
- 数据结构之循环队列(面向对象思想c++实现)
- 数据结构C语言实现之循环队列
- 数据结构C语言实现之循环队列
- 数据结构之---C语言实现循环队列
- 循环队列的面向对象实现(C++)
- 数据结构C语言实现之循环队列----数组形式---简单化
- 数据结构基础之循环队列C语言实现
- 用C实现面向对象思想
- C语言实现面向对象的思想
- C语言实现面向对象思想
- 数据结构的C实现_循环队列
- 数据结构循环队列的实现c程序
- 数据结构(C语言)实现循环队列
- 数据结构.循环队列(C语言实现)
- 数据结构:循环队列(C语言实现)
- 数据结构的C实现_循环队列
- 数据结构:循环队列(C语言实现)
- 【数据结构】循环队列的实现(c++)
- redis 命令大全
- openstack数据库学习
- Python 字符串排序 | 字符串翻转
- 概率论与统计
- 轻松理解—“EOF”和“BOF”
- 数据结构之循环队列(面向对象思想c++实现)
- 公众平台返回原始数据为: 错误代码-40164,错误信息-invalid ip, not in whitelist hint
- Android Activity A 启动Activity B, Acitvity B关闭之后调起Activity C这时切换出现黑屏的问题
- 新一代大数据处理引擎 Apache Flink
- 前端原型编辑器Mockplus(破解)
- 图片上传显示进度条和预览图的前端实现之预览图篇
- java.net.JarURLConnection示例
- android 源码修改记录
- 几种常见的yuv格式(详细)