循环队列及循环队列实现数值转换

#include<iostream>
#define Length 10
#define ERROR 0
#define TRUE 1
using namespace std;

class XU_DL
{
private:
 int *item;
 int front;
 int rear;
 int maxlength;
public:
 XU_DL(int length=Length) //对队列的初始化
 {
  if(length<Length)length=Length;
  item=new int [length];
  maxlength=length;
  front=rear=0;
 }
 ~XU_DL()  //析构函数销毁队列
 {
  delete [] item;
 }
 void ClearXU_DL()  //清空队列
 {
  front=rear=0;
 }
 int Getlength() //获得长度
 {
  if(rear==front)  return ERROR;
  return ((rear-front)+maxlength)%maxlength;
 }
 int Inser(int e)  //插入数据e
 {
  if((rear+1)%maxlength==front)return ERROR;  //队满时的判断语句
  rear=(rear+1)%maxlength;
  item[rear]=e;
  return TRUE;
 }
 int Gethand(int e)  //获得队头元素
 {
  if(rear==front)return ERROR;  //队列为空事的判断语句
  e=item[(front+1)%maxlength];
  return e;
 }
 int Deletedate(int e)  //获取数据并删除该数
 {
  if(rear==front)return ERROR; //队列为空
  front=(front+1)%maxlength;
  e=item[front];
  return TRUE;
 }
 void Output()
 {
  if(front==rear){cout<<"The queue is null!"<<endl;return;}
  cout<<"The queue length is :"<<Getlength()<<endl;
  cout<<"The queue's content is :";
  for(int i=1;i<Getlength();i++)
   cout<<item[i]<<" ";
  cout<<endl;
 }
};
int main()
{
 XU_DL a(10);
 a.Output();
 a.ClearXU_DL();
 for(int i=0;i<10;i++)  //有一个必须为空,用来判断
  a.Inser(i);
 a.Output();
 //a.~XU_DL();析构函数不能显示的调用,只能隐性的调用
 return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值