教育改变生活

标题: 【数据结构】循环顺序队列类 [打印本页]

作者: 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