文档详情

类模板用两个栈模拟一个队列.docx

发布:2017-12-16约2.19千字共4页下载文档
文本预览下载声明
[类模板]用两个栈模拟队列的出栈入栈//stack.h#ifndef STACK_H#define STACK_H#include iostreamusing namespace std;templateclass typeclass SeqQueue;templateclass typeclass SeqStack{friend class SeqQueuetype;protected:int top;int maxsize;type *elems; public:SeqStack(int size =100);virtual ~SeqStack(); int isempty()const; void Push(const type e); void Pop();};templateclass typeSeqStacktype::SeqStack(int size){maxsize=size;if(elems!=NULL) delete[]elems;elems=new type [maxsize];top=-1;}templateclass typeSeqStacktype::~SeqStack(){delete[]elems;}templateclass type int SeqStacktype::isempty()const{if(top==-1)return 1;elsereturn 0;}templateclass type void SeqStacktype::Push(const type e){if(top==maxsize)return;elems[++top]=e;}templateclass type void SeqStacktype::Pop(){if(isempty())return;top--;}#endif//queue.h#ifndef QUEUE_H#define QUEUE_H#include stack.htemplateclass typeclass SeqQueue{protected:SeqStacktype s1;SeqStacktype s2;public:int isempty()const;void inqueue(const type e);void outqueue();void show(const int number)const;};templateclass typevoid SeqQueuetype::inqueue(const type e){ if(s1.top==s1.maxsize)return; else if (s2.isempty()==0){ for( ;s2.top!=-1s1.top!=s1.maxsize;s2.top--) s1.Push(s2.elems[s2.top]); s1.Push(e);} else s1.Push(e);}templateclass typevoid SeqQueuetype::outqueue(){if(s2.isempty()==0)s2.Pop();else if(s1.isempty()==0){for(;s1.top!=-1;s1.top--)s2.Push(s1.elems[s1.top]);s2.Pop();}elsereturn ;}templateclass typeint SeqQueuetype::isempty()const{if(s1.isemptys2.isempty)return 1; else return 0;}templateclass typevoid SeqQueuetype::show(const int number)const{ if(number==1){ if(s1.isempty())cout队列为空endl;for(int i=0;i=s1.top;i++){couts1.elems[i] ;}cout endl;}else{if(s2.isempty())cout队列为空endl; for(int i=s2.top;i=0;i--){couts2.elems[i] ;}cout endl;}}#endif//3.cpp#include queue.hint main(){int select,i,n1,n2,x;SeqQueue ints; cinselect;while(select){ switch(select){case 1:cout输入入栈数目endl; cinn1; for(i=1;i=n1;i++){cinx;s.inqueue(x);}s.show(1);break;case 2:cout输入出栈数目endl; cinn
显示全部
相似文档