第六章·队列·其一

//不能再摸鱼了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<<"队列无效"<rear=0;//初始化队尾
     Q->front=0;//初始化队首
 }
判空

即队尾是否等于队头

 //判空
 bool isEmpty(Sequeue *Q){
     return(Q->front==Q->rear);
 }

//今天就这么多了,溢出之后另开一页1.31

你可能感兴趣的:(第六章·队列·其一)