教育改变生活
标题:
【数据结构】循环顺序队列类
[打印本页]
作者:
wander
时间:
2020-12-3 13:50
标题:
【数据结构】循环顺序队列类
// irQueue.h: interface for the CirQueue class.
//
//循环顺序队列类
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_IRQUEUE_H__09141CE8_32F6_458A_A49F_B5A9C9017308__INCLUDED_)
#define AFX_IRQUEUE_H__09141CE8_32F6_458A_A49F_B5A9C9017308__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
const int MaxSize=100;
template <class T>
class CirQueue
{
private:
T data[MaxSize];//定义数据存储空间
int front,rear;//对头和队尾下标
public:
CirQueue()//构造函数
{
front=rear=MaxSize-1;
}
~CirQueue(){}
//判断队列是否为空:空返回1,不空返回0
bool IsEmpty()
{
if (front==rear)
return 1;
else return 0;
}
void PushQueue(T x)//入队,将x入队(对尾)
{
if((rear+1)%MaxSize==front)
throw "队列已满";
else
{
rear=(rear+1)%MaxSize; //队尾指针在循环意义上加1
data[rear]=x;//在队尾处插入x数据
}
}
T PopQueue() //出队,将对头元素出队
{
if(IsEmpty())
throw "队列已空";
else
{
front=(front+1)%MaxSize;//队头指针在循环意义上加1
return data[front];//读取并返回出队前的对头数据
}
}
T GetQueue() //获取当前队列的对头数据
{
if(IsEmpty())
throw "队列已空";
else
{
int i=(front+1)%MaxSize;//获取队头指针
return data[i];//读取并返回当前队列的对头数据
}
}
void PrintQueue()//打印队列
{
int i=front;
while(i!=rear)
{
i=(i+1)%MaxSize;//获取队头指针
cout<< data[i]<<" ";//读取并返回当前队列的对头数据
}
cout<<endl;
}
};
欢迎光临 教育改变生活 (http://bbs.goldoar.com/)
Powered by Discuz! X3.2