队列----数据结构
创始人
2025-06-01 11:13:56

在这里插入图片描述

队列

  • 🔆队列的概念
  • 🔆队列的结构
  • 🔆队列的实现
  • 🔆设计循环队列
    • 🔆循环队列的结构
    • 🔆循环队列的实现
  • 🔆结语

🔆队列的概念

  • 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)
  • 入队列:进行插入操作的一端称为队尾
  • 出队列:进行删除操作的一端称为队头

🔆队列的结构

在这里插入图片描述

🔆队列的实现

链式队列gitt代码链接

队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。

在这里插入图片描述

🔆设计循环队列

🔆循环队列的结构

我们有时还会使用一种队列叫循环队列。如操作系统课程讲解生产者消费者模型时可以就会使用循环队列。环形队列可以使用数组实现,也可以使用循环链表实现。

在这里插入图片描述

通常空出来一个节点,不用来存放数据,用于判断队列的空和满。
在这里插入图片描述

🔆循环队列的实现

#define _CRT_SECURE_NO_WARNINGS 1#include 
#include 
#include 
#include typedef struct {int* a;int front;int rear;int k;
} MyCircularQueue;MyCircularQueue* myCircularQueueCreate(int k) {MyCircularQueue* cq = (MyCircularQueue*)malloc(sizeof(MyCircularQueue));cq->a = (int*)malloc(sizeof(int) * (k + 1));cq->front = cq->rear = 0;cq->k = k;return cq;
}bool myCircularQueueIsEmpty(MyCircularQueue* obj) {assert(obj);return (obj->front == obj->rear);
}bool myCircularQueueIsFull(MyCircularQueue* obj) {assert(obj);return ((obj->rear + 1) % (obj->k + 1) == (obj->front));
}bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) {assert(obj);if (myCircularQueueIsFull(obj)) {return false;}obj->a[obj->rear++] = value;obj->rear %= (obj->k + 1);return true;
}bool myCircularQueueDeQueue(MyCircularQueue* obj) {assert(obj);if (myCircularQueueIsEmpty(obj)) {return false;}obj->front++;obj->front %= (obj->k + 1);return true;
}int myCircularQueueFront(MyCircularQueue* obj) {assert(obj);if (myCircularQueueIsEmpty(obj)) {return -1;}else {return obj->a[obj->front];}
}int myCircularQueueRear(MyCircularQueue* obj) {assert(obj);if (myCircularQueueIsEmpty(obj)) {return -1;}else {return obj->a[((obj->rear) + (obj->k)) % ((obj->k) + 1)];}
}void myCircularQueueFree(MyCircularQueue* obj) {assert(obj);free(obj->a);obj->a = NULL;free(obj);
}

🔆结语

到这里这篇博客已经结束啦。
这份博客👍如果对你有帮助,给博主一个免费的点赞以示鼓励欢迎各位🔎点赞👍评论收藏⭐️,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧👀

相关内容

热门资讯

李嘉诚港口交易再反转,中方要求... 李嘉诚港口交易再反转,中方明确表态,中国企业必须要拿下控股权!否则,贝莱德就别想买下这43个港口了,...
轻松健康港交所挂牌,打造“AI... 12月23日,中国领先的数字健康服务平台——轻松健康集团(股票代码:2661.HK)正式在香港联合交...
“吸金”超百亿、A500ETF... 独立 稀缺 穿透新起点、新挑战作者:闻道编辑:里尔风品:隆多来源:铑财——铑财研究院临近岁末,A50...
宁德时代供应商纳科诺尔签3.0... 新京报贝壳财经讯(记者黄鑫宇)12月22日,北交所上市公司邢台纳科诺尔精轧科技股份有限公司(即纳科诺...
罗永浩频繁威胁公布录音,华与华... 12月22日晚,读客文化发布《关于筹划控制权变更暨停牌的公告》称,公司于12月19日收到控股股东及实...