实验二:循环队列的验证实验 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;

}

程序结果:

猜你喜欢

转载自blog.csdn.net/LIU_JY_/article/details/80041240
今日推荐