第六章·队列·其一

//不能再摸鱼了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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容