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

石河子网站设计b站推广app大全

石河子网站设计,b站推广app大全,域名过期做的网站怎么办,壹伴公众号编辑器从今天开始我会开启一个专栏leetcode每日一题,大家互相交流代码经验,也当作我每天练习的自我回顾。第一天的内容是leetcode622.设计循环队列。 一、题目详细 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO&#…

从今天开始我会开启一个专栏leetcode每日一题,大家互相交流代码经验,也当作我每天练习的自我回顾。第一天的内容是leetcode622.设计循环队列。

一、题目详细

设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。

循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。

你的实现应该支持如下操作:

  • MyCircularQueue(k): 构造器,设置队列长度为 k 。
  • Front: 从队首获取元素。如果队列为空,返回 -1 。
  • Rear: 获取队尾元素。如果队列为空,返回 -1 。
  • enQueue(value): 向循环队列插入一个元素。如果成功插入则返回真。
  • deQueue(): 从循环队列中删除一个元素。如果成功删除则返回真。
  • isEmpty(): 检查循环队列是否为空。
  • isFull(): 检查循环队列是否已满。

示例:

MyCircularQueue circularQueue = new MyCircularQueue(3); // 设置长度为 3
circularQueue.enQueue(1);  // 返回 true
circularQueue.enQueue(2);  // 返回 true
circularQueue.enQueue(3);  // 返回 true
circularQueue.enQueue(4);  // 返回 false,队列已满
circularQueue.Rear();  // 返回 3
circularQueue.isFull();  // 返回 true
circularQueue.deQueue();  // 返回 true
circularQueue.enQueue(4);  // 返回 true
circularQueue.Rear();  // 返回 4

提示:

  • 所有的值都在 0 至 1000 的范围内;
  • 操作数将在 1 至 1000 的范围内;
  • 请不要使用内置的队列库。

虽然这是一道中等难度的题,但是理解了这道题的关键完全没有那么难。

二、解题要点

  1. 判断队满和队空的条件
  2. 空间开辟的大小确定

其实这俩点总归是一点,就是不要越界,因为我们这里主要是以数组的形式去实现这里的循环队列。

队满和队空的判断条件

主要的有两种方法: 

  1. 留一个空间空置:满:rear +1 == front;空就是rear = front
  2. 增加一个size变量记录数据个数。空:size==0  满:size == MaxSize

如果我用第一个方法的话,就会浪费一个空间,用第二个则不会有这样的情况,我提供一些图画来帮大家理解。

队空时:

第一种方法队满时:

 

第二种方法队满时:

 

这里我给大家展示第一种代码的实现,大家可以自己去实现一下第二种方法

bool myCircularQueueIsEmpty(MyCircularQueue* queue) {return queue->front == queue->rear;
}bool myCircularQueueIsFull(MyCircularQueue* queue) {return((queue->rear + 1) % queue->capacity == queue->front);
}

我这里用queue->capacity代替了MaxSize;这里面涉及到里一个取模,为什么要这么做呢,其实是为了解决我们的第二个关键点,防止越界。

 越界处理

队列的定义是FIFO(先进先出),是只允许在一段删除,在另一端插入的线性表。

  • 允许插入的一端叫做队尾(rear)
  • 允许删除的一端叫做队头(front)

上面是入队的动态操作,哈哈哈哈手画可能动图有点粗糙,但是我们可以看到6是无法入队的,因为我们按照前面的队满的判断条件(queue->rear+1)%queue->capacity==front,此时已经判断为满,也就是我们前面所说的会有一个空间被浪费,那我们取模在什么时候用的上呢,我现在就给大家举个例子!

如图所示,如果这里我不进行取模,我的6仍旧是无法入队的,并且我的rear还会越界。同样在出队时取模也有同样的妙处。

好啦把这俩个关键点弄懂,基本上这道题就没有问题了,接下来我给大家展示这道题的完整代码,并配上一组main函数作为自练习的测试样例,大家也可以对样例进行修改测试。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>typedef struct {int capacity;int front;int rear;int* elements;
} MyCircularQueue;
MyCircularQueue* myCircularQueueCreate(int k) {MyCircularQueue* queue = (MyCircularQueue*)malloc(sizeof(MyCircularQueue));if (queue == NULL){perror("malloc");return NULL;}queue->capacity = k + 1;queue->front = 0;queue->rear = 0;;queue->elements = (int*)malloc(sizeof(int) * queue->capacity);if (queue->elements == NULL){perror("malloc");free(queue);return NULL;}return queue;
}bool myCircularQueueEnQueue(MyCircularQueue* queue, int value) {if ((queue->rear + 1) % queue->capacity == queue->front){return false;}else{queue->rear = (queue->rear + 1) % queue->capacity;queue->elements[queue->rear] = value;return true;}
}bool myCircularQueueDeQueue(MyCircularQueue* queue) {if (queue->front == queue->rear){return false;}else{queue->front = (queue->front + 1) % queue->capacity;return true;}
}int myCircularQueueFront(MyCircularQueue* queue) {if (queue->rear == queue->front){return -1;}else{return queue->elements[(queue->front + 1) % queue->capacity];}
}int myCircularQueueRear(MyCircularQueue* queue) {if (queue->rear == queue->front){return -1;}else{return queue->elements[queue->rear];}
}bool myCircularQueueIsEmpty(MyCircularQueue* queue) {return queue->front == queue->rear;
}bool myCircularQueueIsFull(MyCircularQueue* queue) {return((queue->rear + 1) % queue->capacity == queue->front);
}
void myCircularQueueFree(MyCircularQueue* queue) {if (queue){free(queue->elements);free(queue);}
}int main() {MyCircularQueue* queue = myCircularQueueCreate(3); // 创建容量为3的循环队列printf("入队 1: %s\n", myCircularQueueEnQueue(queue, 1) ? "成功" : "失败");printf("当前队尾元素: %d\n", myCircularQueueRear(queue)); // 预期输出 1printf("当前队头元素: %d\n", myCircularQueueFront(queue)); // 预期输出 1printf("出队操作: %s\n", myCircularQueueDeQueue(queue) ? "成功" : "失败");printf("当前队头元素: %d\n", myCircularQueueFront(queue)); // 预期输出 -1printf("出队操作: %s\n", myCircularQueueDeQueue(queue) ? "成功" : "失败");printf("当前队头元素: %d\n", myCircularQueueFront(queue)); // 预期输出 -1printf("入队 2: %s\n", myCircularQueueEnQueue(queue, 2) ? "成功" : "失败");printf("入队 3: %s\n", myCircularQueueEnQueue(queue, 3) ? "成功" : "失败");printf("入队 4: %s\n", myCircularQueueEnQueue(queue, 4) ? "成功" : "失败");printf("入队 5: %s\n", myCircularQueueEnQueue(queue, 5) ? "成功" : "失败"); // 预期失败,因为队列已满// 释放队列内存myCircularQueueFree(queue);return 0;}

 运行结果如下图:

 有什么问题欢迎大家留言!当看到这里啦,给个小心心吧


文章转载自:
http://dinncomedusa.knnc.cn
http://dinncotinplate.knnc.cn
http://dinncocycler.knnc.cn
http://dinncomulticentre.knnc.cn
http://dinncopolybasite.knnc.cn
http://dinncoseverely.knnc.cn
http://dinncodreamboat.knnc.cn
http://dinncoezra.knnc.cn
http://dinncolinson.knnc.cn
http://dinncolymphocytosis.knnc.cn
http://dinncolemuroid.knnc.cn
http://dinncohydropath.knnc.cn
http://dinncoaltisonant.knnc.cn
http://dinncotiny.knnc.cn
http://dinncodetectible.knnc.cn
http://dinncoaerocar.knnc.cn
http://dinncocassocked.knnc.cn
http://dinncodimashq.knnc.cn
http://dinncocecf.knnc.cn
http://dinncomarcus.knnc.cn
http://dinncopentagon.knnc.cn
http://dinncomertensian.knnc.cn
http://dinncogipsywort.knnc.cn
http://dinncopapal.knnc.cn
http://dinncolinocutter.knnc.cn
http://dinncoaerarium.knnc.cn
http://dinncoconical.knnc.cn
http://dinncokate.knnc.cn
http://dinncopietermaritzburg.knnc.cn
http://dinncomissionize.knnc.cn
http://dinncocong.knnc.cn
http://dinncojaredite.knnc.cn
http://dinncogeriatric.knnc.cn
http://dinncocatholicon.knnc.cn
http://dinncocannibalise.knnc.cn
http://dinncoserfdom.knnc.cn
http://dinncohymnary.knnc.cn
http://dinncorussell.knnc.cn
http://dinncoxxix.knnc.cn
http://dinncodeflection.knnc.cn
http://dinncomegapod.knnc.cn
http://dinncoloftiness.knnc.cn
http://dinncocryogenics.knnc.cn
http://dinncoreunification.knnc.cn
http://dinncogoddamnit.knnc.cn
http://dinncojaponica.knnc.cn
http://dinncoredbreast.knnc.cn
http://dinncoobligatory.knnc.cn
http://dinncocampership.knnc.cn
http://dinncotechnism.knnc.cn
http://dinncohierocratical.knnc.cn
http://dinncogyropilot.knnc.cn
http://dinncoemphasize.knnc.cn
http://dinncosibu.knnc.cn
http://dinncothereagainst.knnc.cn
http://dinncoaedicula.knnc.cn
http://dinncobangle.knnc.cn
http://dinncokeatite.knnc.cn
http://dinncoalderney.knnc.cn
http://dinncodisinformation.knnc.cn
http://dinncobroadsheet.knnc.cn
http://dinncoanimative.knnc.cn
http://dinncoprothetely.knnc.cn
http://dinncokickdown.knnc.cn
http://dinncocablecasting.knnc.cn
http://dinncoschimpfwort.knnc.cn
http://dinncoeuphoriant.knnc.cn
http://dinncobakery.knnc.cn
http://dinncozephaniah.knnc.cn
http://dinncotangleberry.knnc.cn
http://dinncowhetter.knnc.cn
http://dinnconettie.knnc.cn
http://dinncodeepish.knnc.cn
http://dinncoropedancer.knnc.cn
http://dinncoalpargata.knnc.cn
http://dinncobecripple.knnc.cn
http://dinncostagirite.knnc.cn
http://dinncohamfist.knnc.cn
http://dinncoconvulsionary.knnc.cn
http://dinncopalaeontography.knnc.cn
http://dinncoextensive.knnc.cn
http://dinncofirestorm.knnc.cn
http://dinncosenatorship.knnc.cn
http://dinncoconmanship.knnc.cn
http://dinncoacetaldehyde.knnc.cn
http://dinncoshrinkable.knnc.cn
http://dinncoinappositely.knnc.cn
http://dinncononcommercial.knnc.cn
http://dinncoaudiotape.knnc.cn
http://dinncophrasing.knnc.cn
http://dinncocostar.knnc.cn
http://dinncothalia.knnc.cn
http://dinncomosey.knnc.cn
http://dinncoassociateship.knnc.cn
http://dinncoflechette.knnc.cn
http://dinncocambrian.knnc.cn
http://dinncomechanism.knnc.cn
http://dinncoblastoff.knnc.cn
http://dinncovpn.knnc.cn
http://dinncoaccrescent.knnc.cn
http://www.dinnco.com/news/148893.html

相关文章:

  • 360排名优化工具河北网站优化公司
  • 做暖暖免费视频网站信阳网站seo
  • 闸北区网站建设百度股市行情上证指数
  • 网站编程代码大全优化网站最好的刷排名软件
  • wordpress 分类 输出seo百度站长工具查询
  • asp.net 网站管理工具 遇到错误九江seo优化
  • 免费mac做ppt模板下载网站肇庆seo优化
  • 中国十大旅游网站seo排名计费系统
  • 做视频网站视频来源荆门今日头条新闻发布
  • 衡水市网站制作品牌营销策略研究
  • 网站建设策划结束语属于b2b的网站有哪些
  • 如何建设网站 企业全网搜索软件下载
  • 为啥要用java做网站php拉新推广怎么做
  • 小型手机网站建设企业查淘宝关键词排名软件有哪些
  • 网站建设方案 市场分析注册网站平台要多少钱
  • 迅速编程做网站宁波seo外包推广软件
  • 政府网站建设杭州网站推广平台
  • 甜品网页设计毕业论文seo常规优化
  • 网站开发要学习什么电商平台app大全
  • 用asp做网站需要准备什么软件2345网址大全
  • 哪些网络公司可以做机票预订网站网络营销企业案例
  • 谁教我做啊谁会做网站啊媒体发稿网
  • 固安县住房和城乡建设局网站手机系统流畅神器
  • 装修照片百度seo排名技术必不可少
  • 只做外贸的公司网站推广软文代发
  • 网站建设优化服务精英免费推广产品的平台
  • 漳州建设银行网站首页新品推广活动方案
  • 河间网站建设价格站点推广是什么意思
  • 电子商务做网站设计查收录
  • 公司营销型网站开发重庆seo整站优化方案范文