1、队列:FIFO(先进先出)
2、特点:元素操作以FIFO方式操作
2、例子:窗口打饭,银行排队
3、队列两端:
队尾:只能进队的一端
队头:只能出队
#include<iostream>
using namespace std;
#define MAXSIZE 10
//定义类:
class queue
{
//方法
public:
queue();
bool IsFull();
bool IsEmpty();
bool EnQueue(int);//进队
bool DeQueue(int&);//出队
unsigned short QueueLength();//排队人数
void ClearQueue();//清空队列
//属性
private:
int buf[MAXSIZE];//元素容量
int front; //队头
int rear; //队尾
};
queue::queue()
{
this->front=0;
this->rear=0;
}
//满
bool queue::IsFull()
{
if((this->rear+1)%MAXSIZE==this->front)
return true;
else
return false;
}
//空
bool queue::IsEmpty()
{
if(this->rear==this->front)
return true;
return false;
}
//清空
void queue::ClearQueue()
{
this->rear=0;
this->front=0;
}
//进队
bool queue::EnQueue(int d)
{
//先判断队列为满
if(this->IsFull())
return false;
this->buf[this->rear]=d; //从尾巴进 rear指向空尾
this->rear=(this->rear+1)%MAXSIZE;
return true;
}
//出队
bool queue::DeQueue(int& d)
{
//先判断队列为空
if(this->IsEmpty())
return false;
//先取
d=this->buf[this->front];
//指向下一个元素:为队头
this->front=(this->front+1)%MAXSIZE;
return true;
}
unsigned short queue::QueueLength()
{
return 0;
}
int main()
{
//实例化:
queue q;
int i=1;
//出队
for(i=1;i<13;i++)
{
if(q.EnQueue(i)==false)
cout<<i<<"进队失败,队列为满"<<endl;
else
cout<<"当前客户号为"<<i<<endl;
}
//出队
int value=0;
while(q.DeQueue(value))
{
cout<<"请客户"<<value<<"来柜台办理业务"<<endl;
}
}