顺序队列模板--c++实现
2016-09-30 12:04
507 查看
//顺序队列类的实现 #include "iostream" #include "cstdio" #include "cstring" #include "algorithm" using namespace std; template<class elemType> class queue{ public: virtual bool isEmpty()=0; virtual void enQueue(const elemType &x)=0; virtual elemType deQueue()=0; virtual elemType getHead()=0; virtual ~queue(){} }; template<class elemType> class seqQueue:public queue<elemType>{ private: elemType *elem; int maxSize; int front,rear; void doubleSpace(); public: seqQueue(int size=10){ elem=new elemType[size]; maxSize=size; front=rear=0; } ~seqQueue(){ delete[] elem; } bool isEmpty(){ return front==rear; } void enQueue(const elemType &x); elemType deQueue(); elemType getHead(){ return elem[(front+1)%maxSize]; } }; template<class elemType> void seqQueue<elemType>::doubleSpace(){ elemType *tmp=elem; elem=new elemType[2*maxSize]; for(int i=1;i<maxSize;i++){ elem[i]=tmp[(front+i)%maxSize]; } front=0; rear=maxSize; maxSize*=2; delete[] tmp; } template<class elemType> void seqQueue<elemType>::enQueue(const elemType&x){ if((rear+1)%maxSize==front)doubleSpace(); rear=(rear+1)%maxSize; elem[rear]=x; } template<class elemType> elemType seqQueue<elemType>::deQueue(){ front=(front+1)%maxSize; return elem[front]; } int main(int argc, char const *argv[]){ seqQueue<int> seq(3); if(seq.isEmpty()){ cout<<"queue is empty!"<<endl; } seq.enQueue(1); seq.enQueue(2); seq.enQueue(3); cout<<seq.getHead()<<endl; seq.deQueue(); cout<<seq.getHead()<<endl; system("pause"); return 0; }
相关文章推荐
- C++模板实现顺序队列
- 队列(顺序存储)C++模板实现
- 数据结构(6) 顺序队列 c++ 模板实现
- C++模板实现顺序表
- c++实现数据结构七 顺序循环队列
- 数据结构——顺序队列的C++实现
- C++实现顺序栈,运用模板,界面友好,操作方便,运行流畅
- C++模板实现队列
- C++模板实现的单向队列
- C++ 模板应用 实现一个Queue 队列
- 基于数组的循环队列(C++模板实现)
- 队列的C++模板实现
- 循环顺序队列c++实现
- C++ 学习练手 - 数组型队列的模板实现
- 优先级队列——用C++模板实现
- C++类模板 实现顺序表 从《数据结构》(C++版) 北京科海摘抄
- 顺序队列之C++实现
- 队列模板c++实现
- C++顺序表的实现(采用模板)
- 队列的顺序存储及实现(C++版)