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

内江 网站建设网站百度指数

内江 网站建设,网站百度指数,建设一个公司网站要具备什么,游戏公司网站模板下载本专栏内容为#xff1a;leetcode刷题专栏#xff0c;记录了leetcode热门题目以及重难点题目的详细记录 #x1f493;博主csdn个人主页#xff1a;小小unicorn ⏩专栏分类#xff1a;Leetcode #x1f69a;代码仓库#xff1a;小小unicorn的代码仓库#x1f69a; … 本专栏内容为leetcode刷题专栏记录了leetcode热门题目以及重难点题目的详细记录 博主csdn个人主页小小unicorn ⏩专栏分类Leetcode 代码仓库小小unicorn的代码仓库 关注我带你学习编程知识 循环队列 题目描述解题思路代码解决结果与总结 题目描述 题目来源Leetcode622.设计循环队列 设计你的循环队列实现。 循环队列是一种线性数据结构其操作表现基于 FIFO先进先出原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里一旦一个队列满了我们就不能插入下一个元素即使在队列前面仍有空间。但是使用循环队列我们能使用这些空间去存储新的值。 你的实现应该支持如下操作 1.MyCircularQueue(k): 构造器设置队列长度为 k 。 2.Front: 从队首获取元素。如果队列为空返回 -1 。 3.Rear: 获取队尾元素。如果队列为空返回 -1 。 4.enQueue(value): 向循环队列插入一个元素。如果成功插入则返回真。 5.deQueue(): 从循环队列中删除一个元素。如果成功删除则返回真。 6.isEmpty(): 检查循环队列是否为空。 7.isFull(): 检查循环队列是否已满。 解题思路 在环形队列中队列为空时队头队尾指向同一个位置。当队列不为空时队头指向插入的第一个数据队尾指向最后一个数据的下一个位置。当tail1等于front时说明环形队列已满。  注意环形队列的队尾不能像常规队列中队尾一样指向最后一个数据如果这样的话我们将不能区别环形队列的状态是空还是满因为此时队头和队尾都指向同一个位置。这就意味着我们必须留出一个空间这个空间不能存放数据这样我们才能很好的区别环形队列的状态是空还是满。 我们如果用一个数组来实现这个环形队列的话上面这三种状态就对应于以下三种状态 可以看出此时这个数组和环形完全扯不上关系这其实很简单我们只需注意判断两个地方  1.当指针指向整个数组的后方的时候让该指针重新指向数组的第一个元素。  2.当指针指向整个数组的前方的时候让该指针直接指向数组最后一个有效元素的后面。 这样就使得该数组在逻辑上是“环形”的了。 代码解决 typedef struct {int* a;//数组模拟环形队列int k;//队列可存储的有效数据总数int front;//队头int tail;//队尾的后一个位置 } MyCircularQueue;MyCircularQueue* myCircularQueueCreate(int k) {MyCircularQueue* obj (MyCircularQueue*)malloc(sizeof(MyCircularQueue));//申请一个环形队列obj-a (int*)malloc(sizeof(int)*(k1));//开辟队列空间//初始时队头和队尾均为0obj-front 0;obj-tail 0;obj-k k;//设置队列可存储的有效数据个数return obj; }bool myCircularQueueIsEmpty(MyCircularQueue* obj) {return obj-front obj-tail;//当front和tail指向同一位置时队列为空 }bool myCircularQueueIsFull(MyCircularQueue* obj) {int tailNext obj-tail1;if(tailNext obj-k1)//当指针指到队列末尾时指针返回队列开头使队列循环{tailNext 0;}return tailNext obj-front;//当tail1指向的位置与front相同时队列满 }bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) {if(myCircularQueueIsFull(obj))//队列已满不能再插入数据{return false;}else//插入数据{obj-a[obj-tail] value;obj-tail;if(obj-tail obj-k1)//使队列循环obj-tail 0;return true;} }bool myCircularQueueDeQueue(MyCircularQueue* obj) {if(myCircularQueueIsEmpty(obj))//当队列为空时无法再删除数据{return false;}else//删除数据{obj-front;if(obj-front obj-k1)//使队列循环obj-front 0;return true;} }int myCircularQueueFront(MyCircularQueue* obj) {if(myCircularQueueIsEmpty(obj))//当队列为空时无数据可返回{return -1;}else{return obj-a[obj-front];//返回队头指向的数据} }int myCircularQueueRear(MyCircularQueue* obj) {if(myCircularQueueIsEmpty(obj))//当队列为空时无数据返回{return -1;}else//返回tail-1指向位置的数据{int tailPrev obj-tail-1;if(tailPrev -1)//使队列循环tailPrev obj-k;return obj-a[tailPrev];} }void myCircularQueueFree(MyCircularQueue* obj) {free(obj-a);//先释放动态开辟的数组free(obj);//再释放动态开辟的结构体 } 结果与总结 通过所有示例问题得到解决。
http://www.dnsts.com.cn/news/59621.html

相关文章:

  • 开发门户网站报价做抖音风的网站
  • 免费外链网优化工具箱
  • 房产网站制作公司sem是什么
  • 化纤公司网站建设怎么把做的网站发到网上去
  • 国外建筑公司网站政法网站建设有哪些不足
  • 网站建设的布局妞妞的个人网页制作
  • 网站收录排名怎么做wordpress 重写规则
  • 昆明网站建设系统有哪些vi设计案例赏析
  • 沈阳网站建设优化app软件开发平台游戏
  • 一般做网站上传的图片大小凡客的网站功能
  • 郑州建站优化2017建设厅网站
  • 怎么在网站上做宣传做网站迅雷下载链接设置
  • 如何让百度k掉网站网站编辑难做吗
  • 数码网站建设论文数据库与网站
  • html商业网站模板做网站有意思吗?
  • 肃州区住房和城乡建设局网站阿里云租的域名怎么做网站
  • ppt电子商务网站建设asp网站如何实现伪静态
  • 有什么网站可以赚钱护栏板官方网站建设
  • 免费推广网站地址大全网站手机版怎么弄
  • 行业门户网站营销案例后台管理系统界面
  • 网站建设 代表联系群众白云区网站建设
  • 楚雄市住房和城乡建设局门户网站我的世界图片制作器
  • 基于PHP网站开发的管理系统设计与开发建设局网站功能简介
  • 做网站要用到的技术wordpress 取消边栏
  • 公司网站建设的签订合同wordpress黑页
  • 洛阳建设工程信息网10个网站用户体验优化的研究结果
  • 网站制作商城如何建设网站网站
  • 邢台制作网站云南app开发
  • 学校网站建设与管理办法网站搜索框用ps怎么做
  • 电子商务网站建设的目标网站开发专业感想