Tips:样式蚂蚁森林浇水get

java进阶——day03-1 List、Set、数据结构、Collections

数据结构

常见的数据结构

栈(stack)

  栈:stack又称堆栈,他是运算受限的线性表,其限制是仅允许在标的一段进行插入和删除操作,不允许在其他任何位置进行增、删、改等操作。

  特点:

  1、先进后出:先存的元素,后面才能取出(类似于子弹压枪 先压进的子弹 后射出)

  2、栈的出入口都是栈的顶端位置

 

  注意:

  压栈:存元素,把元素存储到栈顶位置,栈中已有元素向栈底移动一个位置

  弹栈:取元素,把存储在栈顶的元素取出来,占中已有元素向栈顶移动一个位置

 

 队列(queue)

  队列:简称同栈一样是受限的线性表,其限制是仅允许一端插入,另一端删除

  特点:

  1、先进先出即存进的元素,先存的元素先出来(类似地铁安检机 先放的行李先检测)

  2、队列的入口、出口各站一侧

 

 

数组(Array)

  数组:Array,是有序的元素序列,数组是在内存中开辟了一段连续的空间,并在此空间存放元素。

  特点

  1、查找快:通过索引,可以快速访问指定位置的元素

 

  解析:为什么查询快?因为存在数组中的每个元素,就像酒店入住的人,通过房间号码,就能快速找到里面住的人

 

   2、增删慢:

  a、指定索引位置添加元素

  需要创建新一个新数组,把原数组元素,复制到新数组对应索引的位置。

  

 

 

   在堆内存中 创建数组-->复制数组的元素到新数组-->旧数组销毁(增删慢)

  b、指定索引位置删除元素

  需要创建新数组,把原数组元素根据索引,复制到数组对应索引的位置,原数组指定索引位置不复制到新数组。

 

 

 

 链表

  链表:linked list,由一系列结点node(链表中每一个元素称为结点)组成,节点可以在运行时动态生成

  节点包含两部分:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。

 

  解析:多个节点,通过地址连接,就像多个人手拉手,右手(自己的地址) 身体(数据) 右手(下一个节点的地址)

 

   特点:

  查找慢:因为他没有索引,所以想要查找某个元素,需要通过连接的节点地址,一个个向后找。

  增删快:

  添加元素:只需要修改连接下一个元素的地址即可(换个人的手牵)

 

 

   

 

  删除元素:只需要修改连接下一个元素的地址即可(换个人的手牵)

 

 红黑树(二叉树)

  二叉树:binary tree,是节点不超过2的有序tree

 

   简单理解,就是类似与生活中的树,只不过最多只能有两个树干而已

  如图:

 

 

   红黑树的约束(了解)

  

  2、根节点是黑色的

  3、叶子节点(特指空节点)是黑色的

  4、每个红色节点的子节点都是黑色的

  5、任何一个节点到其每一个叶子节点的所有路径上黑色节点数相同

  特点:

 

   速度特别快趋近平衡数,查找叶子元素最少和最多次数不多于2倍。

  平衡树:左子树 = 右子树(数量相等)

 

posted @ 2021-03-17 20:36  心岛未晴  阅读(68)  评论(0)    收藏  举报