1. 程式人生 > >實驗二:迴圈佇列的驗證實驗 liujieying

實驗二:迴圈佇列的驗證實驗 liujieying

檔案1CirQueue.h

源程式:

# ifndef CirQueue_H

# define CirQueue_H

const int QueueSize=100;

template<class DataType>

class CirQueue

{

public:

CirQueue(){front=rear=QueueSize-1;}

~CirQueue();

void EnQueue(DataType x);

DataType DeQueue();

DataType GetQueue();

int Empty();

private:

DataType data[QueueSize];

int front,rear;

};

# endif

檔案2CirQueue.cpp

源程式:

# include"CirQueue.h"

template <class DataType>

CirQueue<DataType>::~CirQueue()

{

cout<<"Destroy CirQueue!\n";

}

template <class DataType>

void CirQueue<DataType>::EnQueue(DataType x)

{

if((rear+1)%QueueSize==front) throw"上溢

";

rear=(rear+1)%QueueSize;

data[rear]=x;

}

template <class DataType>

DataType CirQueue<DataType>::DeQueue()

{

if(rear==front) throw"下溢";

front=(front+1)%QueueSize;

return data[front];

}

template <class DataType>

DataType CirQueue<DataType>::GetQueue()

{

DataType i;

if(rear==front) throw"下溢";

i=(front+1)%QueueSize;

return data[i];

}

template <class DataType>

int CirQueue<DataType>::Empty()

{

if(front==rear) return 1;

else return 0;

}

檔案3CirQueue_main.cpp

源程式:

# include<iostream>

using namespace std;

# include"CirQueue.cpp"

int main()

{

CirQueue<int> C;

if(C.Empty())

cout<<"The CirQueue is empty!"<<endl;

else

cout<<"The CirQueue is not empty!"<<endl;

int i;

for(i=1;i<10;i++)

C.EnQueue(i);

cout<<"隊頭元素為:"<<endl;

cout<<C.GetQueue()<<endl;

cout<<"執行一次出隊操作."<<endl;

C.DeQueue();

cout<<"隊頭元素為:"<<endl;

cout<<C.GetQueue()<<endl;

return 0;

}

程式結果: