数据结结构

<font color="pink">数据结构= 程序 + 算法 </font>java

  • 数据结构有什么用node

    当咱们使用着java官方给你提供的容器的时候,咱们用起来是很是方便的,ArrayList实际上是一个无线扩充的数据LinkedList实际上是一个链表。
    现实世界中存储数据,咱们要经过一些工具或者建模来进行存储。每种数据结构都有本身的优缺点。
      而算法,在这么多的数据中若是以最快的速度实现插入,删除,查找数据问题
      咱们java语言是一种面向对象的编程语言,java就至关于自动档汽车,C语言至关于手动挡汽车,python就是无人驾驶汽车,数据结构至关于变速箱的工做原理,若是你懂变速箱的工做原理,那么不但能够开车,也可修车,还能够造车
       数据结构内容很是多,咱们接收java当中常见的数据结构:堆栈,队列,数组,链表和红黑树
  • 常见的数据结构:python

    数据存储的常见结构:栈,队列,数组,链表,和红黑树。算法

  • 编程

    栈,stack,又称为堆栈,他是运算受限的线性表结构,它的限制是仅容许在标的一端插入和删除操做,不容许在其余任何位置进行添加,查找,删除等操做。数组

    简单的说,采用结构的集合,对元素的存取有如下特色数据结构

    • 先进后出(存进去的元素,要在他后面的元素依此取出后,再能取出该元素)。例如:子弹压进弹夹的动做编程语言

    • 栈的入口,出口都是栈的顶端位置。

    空栈:栈顶栈底相等ide

    压栈:存储元素,元素存储到栈的顶端位置,栈中已有的元素依此向栈底移动一个位置。工具

    弹栈:取元素,栈的顶端位置元素取出,栈中已有元素依此向栈顶方向移动一个位置。

  • 队列

    队列,queue,简称对,它同堆栈几乎同样的,也是一种受限制的线性表结构,它的限制是仅容许在标的一端进行插入,在标的另外一端进行删除。

    简单的说,采用该结构的集合,对元素的存储有如下特色:

    • 先进先出(存进去的元素,要在他前面的元素依此取出后,才能取出该元素)。列如:火车过隧道,火车头先从山洞出来,车尾后出来。

    • 队列的入口,出口各占一侧。
  • 数组

    数组,Array,是有序的元素序列,数组在内存当中开辟一段连续的空间,并再此空间内存储元素。列如:生活中的酒店当中的房间号是连续的,不间断,有50个房间,从001--050每一个房间都有固定的编号,经过编号就能够快速找到酒店房间的住户。

    简单的说,采用此结构的集合,对元素取出有如下特色:

    <img src="image\137b3856-0ae2-4eb9-9d5a-45d387c60da2.jpg" style="zoom:20% ;" />

    • 查找元素块,经过索引,能够快速的访问到指定位置的元素。

    • 增删元素慢。

    <img src="image\Snipaste_2020-12-02_15-51-23.png" title="style" style="zoom:80%;" />

    1. 指定索引位置增长元素 :须要建立一个新数组,将指定的新元素存储到指定的索引位置,再把原数组元素根据它原来的索引,赋值到新数组对应的索引位置。
    2. 指定索引位置删除元素:须要建立一个新数组,把原数组的元素根据索引,复制到新数组对应的索引位置,原数组中的指定索引元素复制到新数组当中。

链表结构

  • 链表,linked list,由一系列结点node(链表当中的每个元素称为节点)组成,节点能够在运行时动态生成。每一个节点包含两个部分;存储数据元素的数据域;用来存储下一个节点的指针域。咱们常说的链表结构有单向列表和双向链表

    链表对元素的存取的特色

    • 多个节点之间,经过地址进行链接。好比:多我的玩丢手绢,每一个人右手拉住下一我的的左手,上一我的的左手拉着该人的右手,以此类推,多我的就被链接起来了。

    • 查询元素比较慢:想要查找某个元素,须要经过链接的节点,依此向后查询指定的元素。

    • 删除元素比较快:
    1. 增长一个元素:只须要修改链接下一个元素的地址便可。

    2. 删除一个元素:只要修改链接下一个元素便可。
  • 链表结构的特色

    查询慢:链表结构的地址不是连续的,每次查询元素,都必须从头开始查询。

    增删快:链表结构中,对

红黑树

  • 二叉树: binary tree ,每一个节点数不超过2的数(tree)

    简单的理解,就是相似于咱们生活中的数的结构,只不过每一个节点上最多只能有两个子节点。

    顶上的节点称为根节点,两边的称为左子树,右子树

  • 红黑树的约束:

    1. 节点能够是红色的也能够是黑色的
    2. 根节点是黑色的
    3. 叶子节点(空节点)是黑色的
    4. 每一个红色节点的子节点都是黑色的
    5. 任何一个节点到其每个叶子节点的全部路径上的黑色节点数是相同的
  • 红黑树的特色:

    查询速度很是快,趋近于平衡树,查找叶子元素最小和最大不能超过2倍。

相关文章
相关标签/搜索