資料結構|順序佇列的實現(實驗3.3)
阿新 • • 發佈:2019-01-22
一、實驗目的
1、 熟練掌佇列的結構特點,掌握佇列的順序儲存和實現。
2、 學會使用佇列解決實際問題。
二、實驗內容
1、自己確定結點的具體資料型別和問題規模,建立一個順序佇列,實現佇列的入隊和出隊操作。
原始碼如下:
執行結果如下:#include<iostream> using namespace std; const int Queuesize = 100; template<class T> class Cirqueue{ public: Cirqueue(){ front = rear = Queuesize-1; } ~Cirqueue(){}; void EnQueue(T x); T DeQueue(); T GetQueue(); void PrintQueue(); int Empty() {front==rear?return 1:return 0;} private: T data[Queuesize]; int front,rear; }; template <class T> void Cirqueue<T>::EnQueue(T x) { if((rear+1)%Queuesize==front) throw"上溢"; rear=(rear+1)%Queuesize; data[rear]=x; } template <class T> T Cirqueue<T>::DeQueue() { if(rear==front) throw"下溢"; front=(front+1)%Queuesize; return data[front]; } template <class T> T Cirqueue<T>::GetQueue() { if(rear==front) throw"下溢"; int i=(front+1)%Queuesize; return data[i]; } template <class T> void Cirqueue<T>::PrintQueue() { int p = (front+1) % Queuesize; while(p != rear){ cout<<data[p]<<" "; p = (p+1) % Queuesize; } cout<<data[p]<<endl; } void main() { Cirqueue<int>s; cout<<"將元素 1,2,3,4 依次進隊 "<<endl; for(int i=1;i<=4;i++) { s.EnQueue(i); } cout<<"進隊結果為:"<<endl; s.PrintQueue(); cout<<"出隊一個元素: "<<s.DeQueue()<<endl; cout<<"出隊結果為:"<<endl; s.PrintQueue(); cout<<"隊頭元素為:"<<s.GetQueue()<<endl; }