实验目的:
熟练应用顺序队列,运用于实践操作中,编写编码实现。
实验要求:
运用顺序队列编写学生信息的入队出队,编写代码并成功实现。
实验代码:
头文件:
const int Max=100;
template <class T>
class CirQueue{
public:
CirQueue(){front=rear=Max-1;}
void EnQueue();
T DeQueue();
T GetQueue();
int empty(){if (front==rear) return 1; else return 0;}
private:
T data[Max];
int front,rear;
};
源文件:
#include "tou.h"
#include<iostream>
using namespace std;
template<class T>
void CirQueue<T>::EnQueue(){
T x;
cin>>x;
if((rear+1)%Max==front) throw"over";
rear=(rear+1)%Max;
data[rear]=x;
}
template <class T>
T CirQueue<T>::DeQueue(){
if(rear==front) throw"over";
front=(front+1)%Max;
return data[front];
}
template <class T>
T CirQueue<T>::GetQueue(){
int i;
if(rear==front) throw"over";
i=(front+1)%Max;
return data[i];
}
void main(){
CirQueue<int>x;
int n,i;
cout<<"please input the number"<<endl;
cin>>n;
for(i=1;i<=n;i++){
x.EnQueue();}
cout<<x.empty()<<endl;
cout<<x.GetQueue()<<endl;
for(i=1;i<=n;i++){
cout<<x.DeQueue()<<endl;}
}
实验结果:
、
实验总结:
队列也是操作受限的线性表,只允许在一端插入操作,在另一端进行删除操作的线性表,为了节省操作以及假溢出的问题,需要设立对头与对尾两个指针,并允许队列直接从数组中下标最大的位置延续到下标最小的位置,即循环队列。对空条件为:front=rear;对满条件:(rear+1)%Max=front。