实验之顺序队列

实验目的:

熟练应用顺序队列,运用于实践操作中,编写编码实现。


实验要求:

运用顺序队列编写学生信息的入队出队,编写代码并成功实现。


实验代码:

头文件:

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。



猜你喜欢

转载自blog.csdn.net/Lxin12138/article/details/78324627