队列也是一种存储方式,头进尾出。
先给出顺序存储的代码:
主类
class Queue
{
int data[Maxsize];
int front,rear;//头指针,以及尾指针
public:
Queue();
~Queue();//顺序存储可以为空
void inQueue(int x);//进
int deletedata();//出
int getdata();//获得对列的头数据
int getlength();//获取长度
bool empty();//判断是否为空
};
功能实现代码
构造函数
Queue::Queue()//这里的头尾指针必须从-1开始,队列从0位置开始
{
front=-1;
rear=-1;
}
进队列
void Queue::inQueue(int x)
{
if((rear+1)%Maxsize==front)//这是判断是否满队列的关键公式
{
cout<<"满了";
}
else
{
rear=(rear+1)%Maxsize;
data[rear]=x;
}
}
出队列
int Queue::deletedata()
{
if(front==rear)
{
cout<<"为空";
}
else
{
front=(front+1)%Maxsize;
return data[front];
}
}
获取头数据
int Queue::getdata()
{
if(front==rear)
{
cout<<"为空";
}
else
{
int i=(front+1)%Maxsize;
return data[i];
}
}
获取长度
int Queue::getlength()
{
if(rear==front)
{
cout<<"为空";
}
else
{
return (rear-front+Maxsize)%Maxsize;
}
}
判断是否为空
bool Queue::empty()
{
if(front==rear)
{
cout<<"空";
}
}
顺序存储就是这些,下次给链式存储。