1. 程式人生 > >資料結構|順序佇列的實現(實驗3.3)

資料結構|順序佇列的實現(實驗3.3)

一、實驗目的

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;  
}  
執行結果如下: