首页 > 其他分享 >队列和堆

队列和堆

时间:2023-11-01 21:44:07浏览次数:26  
标签:return 队列 链表 int length 数组

先说说队列,队列就是跟排队一样,从头部出去,从尾部进来,堆的话,可以把它理解为一本书,从最顶部(也就是尾巴进去),从最顶部出去

 

先说说队列,学了两种实现方式,一种是数列实现方式,一种是链表

 

先说说数列,数列要实现队列(不管是单向还是双端)的话,有个难点就是从头部操作,一般的操作,可能就是,后排后移,然后元素加进去,这样子非常麻烦,于是就有了环形数组实现队列,有个疑问可能就是,数组是有索引的啊,但现在我们操作的并不是数组,而是队列,队列呢,我们就是只要留意它的头和尾在哪,但还有一个问题,比如你要加元素进去,然后你为了不影响后面的数组,你的head得往前走一位,这就会造成索引越界,于是有了一个重要的“魔法”:当head<0,自动穿越到最后一个索引,当尾巴>l=ength,自动穿越到第一位

public int inc(int i,int length){

if(i+1>=length){
return 0;
}else {
return i;
}
}
public int dec(int i,int length){
if (i-1<0){
return length-1;
}else return i;
}
环形数组的话,头依旧是第一位,尾巴就是没有意义,等于arr.length(最后一个索引之后哦)

接下来说说链表实现形式,链表就是相对于数组比较特殊的一种,链表实现普通队列就是简单粗暴,环形形式的话还可以多一个哨兵Node作为头和尾公用;双端的话就记得prev和next就好了其实也没什么

堆的话,既然其实也没什么差了懒得讲,其实重点就是数组那几个指针和链条的头尾

标签:return,队列,链表,int,length,数组
From: https://www.cnblogs.com/cjtaaa/p/17804186.html

相关文章

  • Redis队列升级版利用Spring项目BeanDefinition自动注入
    利用Redis实现队列先进先出队列:https://www.cnblogs.com/LiuFqiang/p/16366813.html延迟队列:https://www.cnblogs.com/LiuFqiang/p/16592522.html定长队列:https://www.cnblogs.com/LiuFqian/p/17372463.html在使用Redis做消息队列的时候,需要配置队列属性的bean,如果自己项目......
  • FreeRTOS深入教程(队列内部机制和源码分析)
    (文章目录)前言本篇文章主要来为大家分析队列的内部机制和源码实现。一、队列结构体分析在FreeRTOS中队列会使用一个结构体来表示:1.int8_t*pcHead和int8_t*pcWriteTo:这些指针指向队列存储区的头部和下一个可写入的位置。队列存储区是一个用于存储队列中数据项的缓冲......
  • 带有最小间隔时间的队列读取实现 —— Python异步编程
     (注:照片源自免费网站,地址:https://www.freepik.com/photos/angry-panda/13)  ==================================================   ==================================================......
  • 哪些情况下需要使用消息队列?
    应用解耦:当多个应用程序需要共享数据或资源时,消息队列可以作为中介传递消息,减少程序之间的依赖。异步处理:当一个任务需要很长时间才能完成,那么可以将任务处理过程分为两步:首先将任务放入消息队列中,然后由另一个线程从队列中取出并处理该任务。这种方式允许主程序等待长时间操......
  • LeetCode232.用栈实现队列
    题目描述请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现MyQueue类:voidpush(intx)将元素x推到队列的末尾intpop()从队列的开头移除并返回元素intpeek()返回队列开头的元素booleanempty()如果队列为空,返回tr......
  • 数据结构:栈与队列-详解循环队栈
    《详解循环队栈》目录:循环队列的定义及其特点循环队列的实现完整Demo运行截图小结参考文献一、循环队列的定义及其特点队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表......
  • 05数据结构(栈、队列、数组、链表)
    数据结构一、什么是数据结构计算机底层存储、组织数据的方式。是指数据相互之间是以什么方式排列在一起的。数据结构是为了更加方便的管理和使用数据,需要结合具体的业务场景来进行选择。一般情况下,精心选择的数据结构可以带来更高的运行或者存储效率。如何学习数据结构:每......
  • 10月30日 进程锁+队列
    目录进程锁+队列队列将进程放入队列用(put)读取并且删除队列里面的数据用(get)进程锁+队列进程锁有些类似于绑定方法,它被某个进程使用时,其它进程就要等这个进程结束才能用这个方法。这么做是为了保证数据的安全,加进程锁保证了多个进程修改同一块数据时,同一时间只能有一个进程可......
  • 顺序队列结构分析
    队列介绍队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的特点是先进先出(FIFO),下面是队列......
  • 栈和队列
    栈和队列栈栈的定义引用《数据结构》严蔚敏中关于栈的定义:栈是限定仅在表尾进行插入或删除操作的线性表。首先,栈是一种线性表,其中的元素仍然具有前驱和后继的逻辑结构;其次,栈的基本操作被限定在了表尾,我们只能从表尾进行插入和删除操作。这导致栈中的元素具有所谓后进先出(La......