当前位置: 首页 > news >正文

力扣 622.设计循环队列

目录

  • 1.解题思路
  • 2.代码实现

1.解题思路

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

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);
}

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

http://www.lryc.cn/news/246678.html

相关文章:

  • 初识Linux(2).妈妈再也不用担心我Linux找不到门了。
  • 房屋租赁出售经纪人入驻小程序平台
  • 【计算方法与科学建模】矩阵特征值与特征向量的计算(五):乘幂法的加速(带有原点移位的乘幂法)
  • 2023年【起重机械指挥】考试题库及起重机械指挥考试资料
  • GoLang语言范围(Range)
  • 汽车电子 -- 车载ADAS之FCW(前方碰撞预警)
  • 爬虫系统Docker和Kubernetes部署运维最佳实践
  • 音视频5、libavformat-1
  • 【数据结构复习之路】树和二叉树(严蔚敏版)万字详解主打基础
  • nginx使用详解:转发规则、负载均衡、server_name
  • HarmonyOS 数据持久化 Preferences 如何在页面中对数据进行读写
  • ESP32-Web-Server编程- JS 基础 4
  • JAVA的反射机制
  • Couchdb 权限绕过漏洞复现(CVE-2017-12635)
  • GZ031 应用软件系统开发赛题第2套
  • lack——主页前后端开发优化(精华:java多线程实现数据插入)
  • Anaconda深度学习环境配置命令参考
  • 【iOS】知乎日报
  • python实现自动刷平台学时
  • Vue3-pnpm包管理器创建项目
  • Centos上安装Docker和DockerCompose
  • 视频文件+EasyDarwin做摄像机模拟器模拟RTSP流很方便,还能做成系统服务,方法与流程
  • 修改Linux系统的网络参数
  • virtualList 封装使用 虚拟列表 列表优化
  • HCIP-九、路由控制
  • Vue3水印(Watermark)
  • redis的性能管理、主从复制和哨兵模式
  • 排序算法:归并排序、快速排序、堆排序
  • Redis 面试题——持久化
  • Linux使用固定ip地址