算法导论系列文章之简单数组队列
来源:互联网 发布:水浒传主旨在哪里知乎 编辑:程序博客网 时间:2024/05/19 03:23
同栈一样,队列也是一种应用十分广泛的数据结构,本次的队列是基于数组实现的,有自动扩充功能.
代码非常简单易懂,同样没什么好说的,看代码.
代码在VS2012下编译通过.
Queue.h
//Queue.h//2013.12.29const int defSize=20;const int expSize=10;typedef int ele;class Queue{public:Queue(int size=defSize);~Queue();bool IsEmpty();void EnQueue(ele &data);bool DeQueue(ele &data);private:ele *m_queue;int m_size;int m_head;int m_tail;void ExpQueue(int size=expSize);bool IsFull();};
Queue.cpp
//Queue.cpp//2013.12.29#include "Queue.h"Queue::Queue(int size){m_queue= new ele[size];m_size=size;m_head=0;m_tail=0;}Queue::~Queue(){delete []m_queue;}bool Queue::IsEmpty(){if(m_head==m_tail)return true;return false;}bool Queue::IsFull(){if((m_head-m_tail+m_size)%m_size==1)return true;return false;}void Queue::EnQueue(ele &data){if(IsFull())ExpQueue();m_queue[m_tail]=data;m_tail=(++m_tail)%m_size;}bool Queue::DeQueue(ele &data){if(IsEmpty())return false;data=m_queue[m_head];m_head=(++m_head)%m_size;return true;}void Queue::ExpQueue(int size){ele *expQueue= new ele[m_size+size];auto pos=0;auto length=(m_tail-m_head+m_size)%m_size;while(m_head!=m_tail){expQueue[pos++]=m_queue[m_head];m_head=(++m_head)%m_size;}delete []m_queue;m_queue=expQueue;m_head=0;m_tail=length;m_size+=size;}
Main.cpp
//队列,基于数组的简单实现#include <iostream>#include "Queue.h"using namespace std;int main (){Queue que(5);ele data;for(auto i=0;i<10;i++)que.EnQueue(i);for(auto i=0;i<5;i++)if(que.DeQueue(data))cout<<data<<" ";elsecout<<"Queue Empty!"<<endl;for(auto i=0;i<10;i++)que.EnQueue(i);for(auto i=0;i<21;i++)if(que.DeQueue(data))cout<<data<<" ";elsecout<<"Queue Empty!"<<endl;system("pause");return 0;}
0 0
- 算法导论系列文章之简单数组队列
- 算法导论系列文章之简单数组栈
- 算法导论系列文章之堆排序
- 算法导论系列文章之快速排序
- 算法导论系列文章之计数排序
- 算法导论系列文章之红黑树
- 算法导论系列文章之插入排序和归并排序
- 算法导论系列文章之同时查找最大值和最小值
- 算法导论系列文章之动态规划-钢条切割
- 《算法导论》学习笔记之Chapter10---队列的数组实现
- 基于visual Studio2013解决算法导论之023队列实现(基于数组)
- 栈和队列的数组实现—《算法导论》学习笔记之六
- 算法导论之六栈与队列
- 【算法导论】10.1-5单数组实现双端队列
- 算法导论之最大子数组问题
- 算法导论之寻找最大子数组
- 算法导论-----队列
- 算法导论-优先级队列
- 用grub2引导安装ubuntu13.10
- HttpURLConnection模拟登录后添加cookie读取网页
- 学.Net四大优势必选广州传智播客
- OpenCV学习--仿射变换(affine)
- java语言正则表达式的用法
- 算法导论系列文章之简单数组队列
- HttpURLConnection连接
- 零付款可就读广州传智播客Java课程
- 扩转欧几里得算法 hdu 2669 Romantic
- Java代码高亮
- vim 浏览文件窗口插件
- linux i2c 驱动之一
- VS和Eclipse的调试功能哪个更强大?
- SVM的八股简介和线性分类器