数据结构学习日记(3)——环形队列的代码实现
来源:互联网 发布:添加windows凭据 编辑:程序博客网 时间:2024/05/20 19:15
#ifndef MYQUEUE_H#define MYQUEUE_Hclass MyQueue{public: MyQueue(int QueueCapcity); virtual ~MyQueue(); void ClearQueue(); bool QueueEmpty() const; bool QueueFull() const; int QueueLength(); bool EnQueue(int element); bool DeQueue(int &element); void QueueTraverse(); // void QueueTraverse( Q visit()) 访问复杂对象的时候需要定义访问方法函数private: int *m_Queue; int m_iQueueLen; int m_iQueueCapacity; int m_Head; int m_Tail;};MyQueue::MyQueue(int QueueCapcity){ m_iQueueCapacity = QueueCapcity; m_Head = 0; m_Tail = 0; m_Queue = new int[m_iQueueCapacity]; //从堆中申请内存可能会失败 m_iQueueLen = 0;}MyQueue::~MyQueue(){ delete[]m_Queue; m_Queue = NULL;}void MyQueue::ClearQueue(){ m_Head = 0; m_Tail = 0; m_iQueueLen = 0;}bool MyQueue::QueueEmpty() const{ return m_iQueueLen == 0 ? true : false;}int MyQueue::QueueLength(){ 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_Queue[m_Tail] = element; m_Tail++; m_Tail = m_Tail % m_iQueueCapacity; //实现环形队列的重要一步 m_iQueueLen++; return true; }}bool MyQueue::DeQueue(int &element){ if (QueueEmpty()) return false; else { element = m_Queue[m_Head]; m_iQueueLen--; m_Head++; m_Head = m_Head % m_iQueueCapacity; //实现环形队列的重要一步 return true; }}void MyQueue::QueueTraverse(){ for (int i(m_Head); i < m_iQueueLen + m_Head; ++i) { cout << m_Queue[i%m_iQueueCapacity] << ','; //实现环形队列的重要一步 }}#endif
环形队列比普通队列来讲内存的管理更加方便,对于内存的浪费的影响较小。
阅读全文
0 0
- 数据结构学习日记(3)——环形队列的代码实现
- 数据结构——环形队列的原理(模拟环形队列)
- 数据结构学习:环形队列的模板类实现
- 数据结构之环形队列实现(1)
- 数据结构学习日记(1)——栈模板的代码实现
- 数据结构学习日记(4)——顺序表的代码实现
- 数据结构学习日记(5)——单链表的代码实现
- 数据结构学习日记1——队列
- 数据结构队列之环形队列的动态数组实现:queue
- 环形队列的实现
- C++数据结构环形队列Deque实现
- 震惊篇(一)——如何通过面向对象的思想实现环形队列
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---环形队列篇
- 环形消息队列的实现
- 环形队列的c++实现
- 环形队列的C++实现
- 环形队列的实现原理
- 环形队列的数组实现
- ThreadLocal管理Session
- OS学习笔记三:处理器调度
- 数据结构——顺序表删除之移位算法
- JAVA面向对象编程——继承
- ArrayList的elementData为什么要用transient修饰
- 数据结构学习日记(3)——环形队列的代码实现
- HDU-1372 Knight Moves
- 【紫书】(UVa1347)Tour
- Sringmvc的理解上
- 关于华为手机使用MTK刷机时出现failed to get PMT info的解决办法
- 06_动态规划科室
- 说说Java代理模式
- LintCode-454.Rectangle Area
- 几种基本数据类型选择