#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;
}