「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」
设计循环队列
题目
image-20211103204637814
我们会使用一种队列叫循环队列。如操作系统课程讲解生产者消费者模型时可以就会使用循环队列。环形队列可以使用数组实现,也可以使用循环链表实现。
image-20211103204617520
image-20211103230000226
可以认为队尾tail不是队尾,而是我们认知上队尾的后一个
数组形式(通过下标控制来达到循环的效果)
环队结构体(数组)
1 | c复制代码typedef struct { |
环队初始化
1 | c复制代码MyCircularQueue* myCircularQueueCreate(int k) { |
判断环队为空
1 | c复制代码bool myCircularQueueIsEmpty(MyCircularQueue* obj) { |
判断环队为满
1 | c复制代码bool myCircularQueueIsFull(MyCircularQueue* obj) { |
环队入数据并入成功返回真
1 | c复制代码bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) { |
环队删数据并删成功返回真
1 | c复制代码bool myCircularQueueDeQueue(MyCircularQueue* obj) { |
环队取队头数据(对空返回-1)
1 | c复制代码int myCircularQueueFront(MyCircularQueue* obj) { |
环队取队尾数据(对空返回-1)
1 | c复制代码int myCircularQueueRear(MyCircularQueue* obj) { |
环队销毁
1 | c复制代码void myCircularQueueFree(MyCircularQueue* obj) { |
image-20211104220502511
image-20211104220526761
环队(数组实现)
1 | c复制代码typedef struct { |
链表形式
环队结构体(链表)
1 | c复制代码typedef int CQDataType;//环队数据类型 |
环队初始化
1 | c复制代码MyCircularQueue* myCircularQueueCreate(int k) { |
判断环队为空
1 | c复制代码bool myCircularQueueIsEmpty(MyCircularQueue* obj) { |
判断环队为满
1 | c复制代码bool myCircularQueueIsFull(MyCircularQueue* obj) { |
环队入数据并入成功返回真
1 | c复制代码bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) { |
环队删数据并删成功返回真
1 | c复制代码bool myCircularQueueDeQueue(MyCircularQueue* obj) { |
环队取队头数据(对空返回-1)
1 | c复制代码int myCircularQueueFront(MyCircularQueue* obj) { |
环队取队尾数据(对空返回-1)
1 | c复制代码int myCircularQueueRear(MyCircularQueue* obj) { |
环队销毁
1 | c复制代码void myCircularQueueFree(MyCircularQueue* obj) { |
image-20211105064130129
环队(链表实现)
1 | c复制代码typedef int CQDataType;//环队数据类型 |
实际上这题我报错我不想找了太恶心了(家凌帮我找错的非常感谢)
img
本文转载自: 掘金