C++模板实现顺序队列
来源:互联网 发布:网络十大神豪 编辑:程序博客网 时间:2024/06/08 19:33
顺序队列是队列的顺序存储结构,顺序队列实际上是运算受限的顺序表。和顺序表一样,顺序队列用一个向量空间来存放当前队列中的元素。由于队列的队头和队尾的位置是变化的,设置两个指针front和rear分别指示队头元素和队尾元素在向量空间中的位置,它们的初值在队列初始化时均应设置为0。
现在我们简单实现一个顺序队列:
SeqQueue.h
template<typename Type> class SeqQueue{public:SeqQueue(int sz):m_nrear(0),m_nfront(0),m_ncount(0),m_nMaxSize(sz){m_pelements=new Type[sz];if(m_pelements==NULL){cout<<"Application Error!"<<endl;exit(1);}}~SeqQueue(){delete[] m_pelements;}void MakeEmpty(); //make the queue emptybool IsEmpty();bool IsFull();bool Append(const Type item); //insert dataType Delete(); //delete dataType Get(); //get datavoid Print(); //print the queueprivate:int m_nrear;int m_nfront;int m_ncount;int m_nMaxSize;Type *m_pelements;};template<typename Type> void SeqQueue<Type>::MakeEmpty(){this->m_ncount=0;this->m_nfront=0;this->m_nrear=0;}template<typename Type> bool SeqQueue<Type>::IsEmpty(){return m_ncount==0;}template<typename Type> bool SeqQueue<Type>::IsFull(){return m_ncount==m_nMaxSize;}template<typename Type> bool SeqQueue<Type>::Append(const Type item){if(IsFull()){cout<<"The queue is full!"<<endl;return 0;}m_pelements[m_nrear]=item;m_nrear=(m_nrear+1)%m_nMaxSize;m_ncount++;return 1;}template<typename Type> Type SeqQueue<Type>::Delete(){if(IsEmpty()){cout<<"There is no element!"<<endl;exit(1);}Type temp=m_pelements[m_nfront];m_nfront=(m_nfront+1)%m_nMaxSize;m_ncount--;return temp;}template<typename Type> Type SeqQueue<Type>::Get(){if(IsEmpty()){cout<<"There is no element!"<<endl;exit(1);}return m_pelements[m_nfront];}template<typename Type> void SeqQueue<Type>::Print(){cout<<"front";for(int i=0;i<m_ncount;i++){cout<<"--->"<<m_pelements[(m_nfront+i+m_nMaxSize)%m_nMaxSize];}cout<<"--->rear"<<endl<<endl<<endl;}Main.cpp
#include <iostream>using namespace std;#include "SeqQueue.h"int main(){SeqQueue<int> queue(10);int init[10]={1,6,9,0,2,5,8,3,7,4};for(int i=0;i<5;i++){queue.Append(init[i]);}queue.Print();cout<<queue.Delete()<<endl;queue.Print();for(int i=5;i<10;i++){queue.Append(init[i]);}queue.Print();cout<<queue.Get()<<endl;queue.MakeEmpty();queue.Print();queue.Append(1);queue.Print();return 0;}
阅读全文
0 0
- 顺序队列模板--c++实现
- C++模板实现顺序队列
- 顺序队列类实现(C++)
- 顺序队列C/C++实现
- 队列(顺序存储)C++模板实现
- [数据结构]队列之顺序队列的类模板实现
- 数据结构---队列顺序表c实现
- 循环队列 顺序存储 C实现
- 队列的顺序存储C实现
- 顺序循环队列的c语言实现
- 【数据结构】顺序队列的实现(c++)
- 循环队列-顺序存储-c语言实现
- 顺序队列的C语言实现
- 【c++】模拟实现顺序队列方法一
- 【c++】模拟实现顺序队列方法二
- C语言数据结构-顺序队列-数组实现
- 数据结构-队列-顺序表实现-C语言
- c++(模板类)实现顺序表
- Redis启动多端口、运行多实例
- java 导出excel实战
- codis3 搭建部署实验
- Ubuntu16.04 安装Pycharm
- javaee学习日记之java基础之内部类和反射
- C++模板实现顺序队列
- mysql数据向Redis快速导入
- How to install PicOS in Edgecore-5712-54X
- code-push-server的部署(源码)
- redis密码管理
- vue2.0(新手)第一个坑--do not mount Vue to <body>!!!
- LeetCode Print Binary Tree
- 计算机语言发展史
- Android-->ConstraintLayout解读