草庐IT

力扣OJ题讲解——循环队列

今天我们一起来做一道关于队列的OJ题目,这是力扣题目622题,点击题目链接可以直接跳转,https://leetcode.cn/problems/design-circular-queue/首先,我们看到要求,需要我们实现哪些功能?  我们需要设置队列长度K,队首元素,队尾元素,插入元素,删除元素,判断空,判断满。那这么多接口,我们要从哪里入手呢?我们现在做题无外乎要么用顺序表的方式,要么用链表的方式,使用两者其实都可以,今天我们就用顺序表的方式实现吧。既然使用顺序表也就是数组,那么我们要考虑一点,在什么情况下这个队列为空?要确定这个循环队列为空,那就需要保证,头元素的下标和尾元素的下标相等才

LeetCode 热题100——栈与队列专题(三)

一、有效的括号20.有效的括号(题目链接)思路:1)括号的顺序匹配:用栈实现,遇到左括号入,遇到右括号出(保证所出的左括号与右括号对应),否则顺序不匹配。2)括号的数量匹配:1>左括号大于右括号:用栈实现,遇到左括号入,遇到右括号出,遍历完字符数组,此时栈不为空,则说明左括号数量大于右括号;2>右括号大于左括号:遇到右括号出时,判断栈是否为空,若此时栈为空,说明右括号数量大于左括号;typedefcharSDateType;typedefstructStack{ SDateType*a; inttop; intcapacity;}Stack;//初始化栈和销毁栈voidInitStack(St

数据结构—队列的实现

前言:上次我们已经学习了数据结构中一个重要的线性表—栈,那么我们这一次就来学习另外一个重要的线性表—队列。目录:一、队列的概念二、队列的实现:1.队列的创建三、队列的操作1.初始化队列2.队尾入队列3.队头出队列4.获取队列头部元素5.获取队列队尾元素6.获取队列中有效元素个数7.检测队列是否为空,如果为空返回非零结果,如果非空返回08.销毁队列四、完整代码展示队列的概念队列的概念及结构:队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(FirstInFirstOut)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头。队列的

【linux】进行间通信——共享内存+消息队列+信号量

共享内存+消息队列+信号量1.共享内存1.1共享内存的原理1.2共享内存的概念1.3接口的认识1.4实操comm.hppservice.cc(写)clint.cc(读)1.5共享内存的总结1.6共享内存的内核结构2.消息队列2.1原理2.2接口3.信号量3.1信号量是什么3.2为什么要信号量3.3接口4.IPC资源的组织方式进程间通信方式目前我们已经学了匿名管道,命名管道。让两个独立的进程通信,前提是看到同一份资源。匿名管道适用于血缘关系的进程,一个打开写端一个打开读端实现的。命名管道适用于完全独立的进程,打开同一份文件实现的。接下来我们看看剩下的实现进程间通信的方式。1.共享内存1.1共享内

数据结构与算法之Python实现——队列

在上一期博客中我们学习了栈这种结构,本期博客将学习一下跟栈很类似的一种结构——队列。本期知识点:顺序队列循环队列链式队列队列的应用🍁顺序队列⚪️什么是队列?队列是一种跟栈很相似的结构。我们知道栈是一种先进后出的结构,那么队列就像一个排队的队伍一样,排在前面的买到东西后就离开,然后下一个继续买,而后来的人只能按照规矩排到他们的后面,也就是说队列是一种先进先出的结构。⚪️什么是顺序队列?在顺序栈中,我们用到了两个指针“base”和“top”来表示栈底和栈顶元素的下一个位置,在队列中呢我们也用两个指针“front”和“rear”来分别表示队头元素和队尾元素的下一个位置。看下图理解:从上图可以看到顺序

leetcode——设计循环队列

设计循环队列这个题目在这里小编只分享一个解题思路,因为还有一个思路小编还在尝试,一直过不了,还在这里不断尝试,等我试出来的时候我在分享给大家,首先我们在这里给出的是数组的形式,后面在分享单链表的思路,因为数组在内存上是连续的,这里给出的思路是多开出一个空间的内存,然后我们在进行插入和删除,下面给一个图来给大家来看看。我们可以看到我们这个数组其实是来存储四个字节大小的,但是我们多存储一个int类型大小的空间,如果tail+1==head的话我们就当空间是满的。但是当我们的head是和tail相等的时候我们就可以认为是空的,所以这里多开一个空间的作用就出来了,就是可以保证这两个有区别,如果我们不是

LeetCode | 225. 用队列实现栈

LeetCode|225.用队列实现栈OJ链接此题可以用两个队列去实现一个栈,每次始终保持一个队列为空,入栈操作相当于给非空队列进行入队操作入数据,把不为空的队列入出数据,把不为空的队列数据导入为空,直到最后一个出栈操作相当于非空队列的队尾元素出队,此时需要把非空队列除最后一个元素之外的其余元素入队到空队列,然后出队最后一个队尾元素代码如下:#include#include#include#includetypedefintQDataType;typedefstructListQNode{ QDataTypeval; structListQNode*next;}QNode;typedefstr

【数据结构】队列的实现及应用和循环队列的实现【完整版】

目录一、队列的概念及结构二、队列的实现1.队列的初始化--QueueInit2.队列的插入--QueuePush3.判断队列是否为空--QueueEmpty4.删除队列的元素--QueuePop5.队列的长度--QueueSize6.找队列的队头--QueueFront7.找队列的队尾--QueueBack8.销毁队列--QueueDestroy三、队列的实际应用四、队列的几道经典编程题五、概念选择题一、队列的概念及结构相比栈,队列的特性和栈是相反的。它只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(FirstInFirstOut)的特性。入队列:

RabbitMQ系列(15)--死信队列的简介与死信队列和死信消费者的实现

1、死信的概念死信,顾名思义就是无法被消费的消息,一般来说producer(生产者)将消息投递到broker或直接放到queue(队列)中,consumer(消费者)从queue(队列)取出消息进行消费,但某些时候由于特定的原因导致queue(队列)中的消息无法被消费,若这些消息没有后续的处理,则这些消息就变成了死信,有死信自然就有了死信队列2、死信的应用场景为保证订单业务的消息数据不丢失,需要使用RabbitMQ的死信队列机制,当消息发生异常时,将消息投入死信队列中3、死信的来源(1)消息TTL(存活时间)过期(2)队列达到最大长度(队列满了,无法再添加数据到mq中)(3)消息被拒绝(bas

代码随想录算法训练营第十天| 232 用栈实现队列 225 用队列实现栈

目录 232用栈实现队列225用队列实现栈用两个queue实现方法一方法二用一个queue实现方法一方法二用两个deque实现方法一用一个deque实现方法一 232用栈实现队列栈的特性:先进后出队列的特性:先进先出创建两个栈stackIn与stackOut。push操作:将元素添加到stackIn中。pop操作:判断stackOut中是否有值,若有则输出stackOut中的值,若无则将stackIn中的值全部加入到stackOut中,再输出stackOut中的值。peek操作:判断stackOut中是否有值,若有则输出stackOut中的值,若无则将stackIn中的值全部加入到stackO