网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1026|回复: 0
打印 上一主题 下一主题

【数据结构】循环顺序队列类

[复制链接]

618

主题

625

帖子

2815

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2815
跳转到指定楼层
楼主
发表于 2020-12-3 13:50:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
// 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;
}

};
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2024-5-11 19:46 , Processed in 1.211172 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表