C++ 队列详解

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

猜你喜欢

转载自blog.csdn.net/weixin_42581477/article/details/81542664