标签:arraylist 地址 组成 修改 paste 列表 连接 生成 官方
<font color="pink">数据结构= 程序 + 算法 </font>数据结构有什么用
当我们使用着java官方给你提供的容器的时候,我们用起来是非常方便的,ArrayList其实是一个无线扩充的数据LinkedList其实是一个链表。
现实世界中存储数据,我们要通过一些工具或者建模来进行存储。每种数据结构都有自己的优缺点。
而算法,在这么多的数据中如果以最快的速度实现插入,删除,查找数据问题
我们java语言是一种面向对象的编程语言,java就相当于自动档汽车,C语言相当于手动挡汽车,python就是无人驾驶汽车,数据结构相当于变速箱的工作原理,如果你懂变速箱的工作原理,那么不但可以开车,也可修车,还可以造车
数据结构内容非常多,我们接收java当中常见的数据结构:堆栈,队列,数组,链表和红黑树
常见的数据结构:
数据存储的常见结构:栈,队列,数组,链表,和红黑树。
栈
栈,stack,又称为堆栈,他是运算受限的线性表结构,它的限制是仅允许在标的一端插入和删除操作,不允许在其他任何位置进行添加,查找,删除等操作。
简单的说,采用结构的集合,对元素的存取有以下特点
先进后出(存进去的元素,要在他后面的元素依此取出后,再能取出该元素)。例如:子弹压进弹夹的动作
空栈:栈顶栈底相等
压栈:存储元素,元素存储到栈的顶端位置,栈中已有的元素依此向栈底移动一个位置。
弹栈:取元素,栈的顶端位置元素取出,栈中已有元素依此向栈顶方向移动一个位置。
队列
队列,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倍。
标签:arraylist 地址 组成 修改 paste 列表 连接 生成 官方
原文地址:https://blog.51cto.com/14954368/2559443