一、实验目的
1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。
2、 学会使用栈和队列解决实际问题。
二、实验内容
1、 自己确定结点的具体数据类型和问题规模:
建立一个循环队列,实现队列的入队和出队操作。
代码:
#include<iostream>
using namespace std;
const int maxsize=100;
template<class Datatype>
class CirQueue
{
public:
CirQueue(){front=rear=maxsize-1;}
~CirQueue(){}
void EnQueue(Datatype x);
Datatype DeQueue();
Datatype GetQueue();
int Empty(){if(front==rear) return 1;else return 0;}
private:
Datatype data[maxsize];
int front,rear;
};
template<class Datatype>
void CirQueue<Datatype>::EnQueue(Datatype x){
if((rear+1)%maxsize==front) throw"上溢";
rear=(rear+1)%maxsize;
data[rear]=x;
}
template<class Datatype>
Datatype CirQueue<Datatype>::DeQueue(){
if(rear==front) throw"下溢";
front=(front+1)%maxsize;
return data[front];
}
template<class Datatype>
Datatype CirQueue<Datatype>::GetQueue(){
Datatype i;
if(rear==front) throw"下溢";
i=(front+1)%maxsize;
return data[i];
}
int main(){
CirQueue<int> q;
cout<<"将1和2入队!"<<endl;
q.EnQueue(1);
q.EnQueue(2);
cout<<"队头元素为:";
cout<<q.GetQueue()<<endl;
cout<<"将5入队!"<<endl;
q.EnQueue(5);
cout<<"队头元素为:";
cout<<q.GetQueue()<<endl;
cout<<"执行出队操作!";
cout<<q.DeQueue()<<endl;
cout<<"队头元素为:";
cout<<q.GetQueue()<<endl;
return 0;
}