力扣 622.设计循环队列

简介: 力扣 622.设计循环队列

1.解题思路

首先,该题是设计循环队列,因此我们有两种实现方法,即数组和链表,但具体考虑后,发现数组实现要更容易一些,因此使用数组实现,因此我们要给出头和尾变量,个数变量以及一个数组,利用取模运算来达到想要的效果,要特别注意的是,为了方便个数的统计以及在判断队列是否为满方便一些,因此在开辟空间的时候直接多开辟一块,即有效空间为K,而实际开辟空间为K+1.

277a000439f643d38fe4dd12d4ed2be1.png

2.代码实现

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

结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!

目录
相关文章
|
6月前
|
存储
622.设计循环队列(LeetCode)
622.设计循环队列(LeetCode)
622.设计循环队列(LeetCode)
|
6月前
|
存储
「LeetCode」622. 设计循环队列
「LeetCode」622. 设计循环队列
47 0
|
算法
数据结构刷题训练:用栈实现队列(力扣OJ)
数据结构刷题训练:用栈实现队列(力扣OJ)
62 0
LeetCode | 622. 设计循环队列
LeetCode | 622. 设计循环队列
|
12月前
|
存储
Leetcode622.设计循环队列
Leetcode622.设计循环队列
28 0
|
6月前
|
存储
LeetCode——622设计循环队列
LeetCode——622设计循环队列
|
6月前
|
存储 算法
【数据结构与算法 | 基础篇】[链表专题]力扣206, 203, 19
【数据结构与算法 | 基础篇】[链表专题]力扣206, 203, 19
|
索引
LeetCode:设计循环队列
LeetCode:设计循环队列
45 0
|
6月前
|
存储
leetcode-622:设计循环队列
leetcode-622:设计循环队列
35 1
|
6月前
|
机器学习/深度学习 存储
leetcode:循环队列
leetcode:循环队列