<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%;" />
链表结构
链表,linked list,由一系列结点node(链表当中的每个元素称为节点)组成,节点能够在运行时动态生成。每一个节点包含两个部分;存储数据元素的数据域;用来存储下一个节点的指针域。咱们常说的链表结构有单向列表和双向链表
链表对元素的存取的特色
多个节点之间,经过地址进行链接。好比:多我的玩丢手绢,每一个人右手拉住下一我的的左手,上一我的的左手拉着该人的右手,以此类推,多我的就被链接起来了。
查询元素比较慢:想要查找某个元素,须要经过链接的节点,依此向后查询指定的元素。
增长一个元素:只须要修改链接下一个元素的地址便可。
链表结构的特色
查询慢:链表结构的地址不是连续的,每次查询元素,都必须从头开始查询。
增删快:链表结构中,对
红黑树
二叉树: binary tree ,每一个节点数不超过2的数(tree)
简单的理解,就是相似于咱们生活中的数的结构,只不过每一个节点上最多只能有两个子节点。
顶上的节点称为根节点,两边的称为左子树,右子树
红黑树的约束:
红黑树的特色:
查询速度很是快,趋近于平衡树,查找叶子元素最小和最大不能超过2倍。