//不能再摸鱼了QWQ
什么是队列
队列(Queue)是一种操作受限的线性表,与栈的不同之处在于队列是在表的两端进行操作的线性表。在生活中的体现如:排队、食堂排队打饭等。
队列是一种先进先出的线性表(First In First Out,FIFO),刚好与栈相反。
图示如下:
队列示意图
队列只允许在一端进行入队,另一端为出队(加塞警告XD),分别称为rear,front。不含数据元素的队列称为空队列。
算法实现
此处用一维数组来作为队列的顺序存储空间
#define Max 10//队列容量
#define Elemtype int
typedef struct queue
{
Elemtype data[Max];//队列数据存储空间
int front;//头指针(实际为data数组下标)
int rear;//尾指针(同上)
}Sequeue;
头指针总是指向队列中实际队头元素的位置,尾指针指向队尾元素的下一个位置。
初始化队列时,front=rear=0,也就是将队尾和队头都指向数组之首。每次插入元素后尾指针移动+1,元素出队时头指针和尾指针操作类似,也是移动+1,如下图所示:
队列示意图,从左到右分别为空队列、元素入队、元素出队
关于溢出—传送门//未完工1.31
队列初始化
//初始化
Sequeue InitQueue(Sequeue *Q){
if(!Q){
cout<<"队列无效"<<endl;
return *Q;
}
Q->rear=0;//初始化队尾
Q->front=0;//初始化队首
}
判空
即队尾是否等于队头
//判空
bool isEmpty(Sequeue *Q){
return(Q->front==Q->rear);
}
//今天就这么多了,溢出之后另开一页1.31