力扣 622.设计循环队列

目录

1.解题思路

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

2.代码实现

cpp 复制代码
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);
}

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

相关推荐
Tisfy5 分钟前
LeetCode 1979.找出数组的最大公约数:模拟(附手动gcd)
java·数学·算法·leetcode·题解·最大公约数
圣光SG7 分钟前
Excel 函数大全
算法·excel
To_OC41 分钟前
LC 79 单词搜索:都说这是回溯入门题,我却连错三回
javascript·算法·leetcode
问商十三载2 小时前
2026大模型GEO内链优化:3个传导逻辑提权重,零成本提29%收录优先级附布局表
人工智能·算法
Risk Actuary3 小时前
手动示例解释机器学习中 GBDT 算法原理
人工智能·算法·机器学习
Lucis__3 小时前
基于Cache替换算法的LRU缓存实现
数据结构·c++·算法·缓存·lru
血色橄榄枝9 小时前
基于用户注册信息的关键词检测挑战赛「Datawhale AI 夏令营」
人工智能·算法·机器学习
c2385610 小时前
第二篇:《测试指挥官:可视化单题自测框架(含 assert 实操)》
java·数据库·c++·算法·安全性测试
六点_dn11 小时前
Linux学习笔记-printf命令
linux·运维·算法
遥感知识服务12 小时前
Sentinel-1 + DEM + FwDET + 随机森林:从快速水深初估到多因子误差修正
算法·随机森林·sentinel