作者:意淫图 | 来源:互联网 | 2023-07-30 10:19
一、解释定义1.数据结构:数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。Java中的数组就是典型的顺序存储,链表就是非顺序存储。所以单向链表的最后一个节点是指向Nul
一、解释定义 1.数据结构:
数据结构是相互之间存在一个或多个特定关系的数据元素的集合。 再简单说明一下,数据结构是记述对象间逻辑关系的学科。
如果还是不太清楚,请举例如下。
2 .数据存储结构:
简单地说,就是数据在计算机中的存储方法。
典型的数据存储有两种方法:顺序存储和非顺序存储。 顺序存储是指将数据存储在一个相关的存储介质(如硬盘或内存)中。 相反是非顺序存储啊。 Java数组是典型的顺序存储器,而链表是非顺序存储器。 在数组中存储数据时,会创建一个接触存储器并按顺序存储。 链表并不是首先建立内存,只要知道下一个节点保存在哪里,就可以连接所有的数据。 因此,单向链表的最后一个节点指向Null。
数组、链表、栈和队列是最基本的数据结构,任何程序语言都包含一种或多种类型。
二、数组数组是数据结构中的基本结构,很多编程语言中都内置有数组。
java在创建数组时在内存中分割连续的内存,在数据进入时按顺序将数据存储在连续的内存中。 如果需要读取数组中的数据,则必须提供数组中的索引,数组根据索引检索内存中的数据,然后返回给读取程序。 Java并不是将所有数据存储在数组中,而是只将相同类型的数据一起存储在数组中。
所有的数据结构都支持读取、插入和删除这一基本操作。
数组在存储数据时按顺序存储,存储数据的存储器也是连续的,所以具有寻址读取容易,插入和删除困难的特点。 简单说明一下为什么,读入数据时,告诉数组从哪个位置(索引)取得数据即可,数组直接取出想要位置的数据进行传递。 插入和删除之所以困难,是因为存储这些数据的内存是连续的,要插入和删除这些数据,必须更改数组中数据的位置。 例如,一个数组在0-1-2-3-4这5个存储器地址中存储了数组的数据,但现在需要在4中插入数据。 那意味着从4开始,后面所有内存的数据都向后移动一个。 但是,需要时间。
用三、链表Java创建链表的过程与创建数组的过程不同,不会首先分割连续的内存。 链表中的数据不是连续的,所以链表在存储数据的内存中有两个区域。 一个区域用于存储数据,另一个区域用于记录下一个数据存储在哪里(指向下一个数据的指针)。 数据进入链表后,基于指针找到存储下一个数据的位置,保存数据,然后指向存储下一个数据的位置。 这样,链表利用了碎片化的空间。 链表是一个线性表,但并不是按线性顺序存储数据。
链表就是这样保存数据的,所以链表很容易插入和删除,读取数据很麻烦。 举例来说,在一个链表中有5个存储器地址0-1-2-3-4存储数据。 当前需要在2中插入数据时,只需更改1号和2号记录下一个数据的位置即可,不影响其他数据。 删除一个数据与插入相似,而且效率很高。 但是,如果想从链表中检索数据,则需要从0日开始逐个查找,直到找到想要的数据为止。
插入到链表中
从链表中删除
四、栈堆栈是先进的后发数据结构,可以通过数组和链表生成堆栈。 数据进入堆栈时,按照规则被推入堆栈底部,再次进入的数据被推入最初的数据之上,像这样。
取出堆栈中的数据时,首先取出最上面的数据,因此是先入先出。
gin/pgc-image/5ae9205b484540c9ab5a13b925f1519b?from=pc">
由于数组和链表都可以组成栈,所以操作特点就需要看栈是由数组还是链表生成的了,然后就会继承相应的操作特点。
五、队列
队列是一种先进先出的数据结构,数组和链表也都可以生成队列。当数据进入到队列中时也是先进入的在下面后进入的再上面,但是出队列的时候是先从下面出,然后才是上面的数据出,最晚进入的队列的,最后出。
举个简单的例子:可以把栈和队列看成是两根管子,这两根管子是用来存储数据的,有可能是数组生成的也有可能是链表生成的,栈的这根管子有一头是封死的,所以像这个管子放数据只能从一个口进,拿出数据的时候也只能从这一个口拿出来。而队列这根管子呢两个口都是敞开的,一个口负责进数据,另一个口负责出数据,所以从一进口先进去的数据,在出口处会先被拿出来。
推荐阅读
绝对干货,掌握这27个知识点,轻松拿下80%的技术面试(Java岗)
一线大厂为什么面试必问分布式?
在一次又一次的失败中,我总结了这份万字的《MySQL性能调优笔记》
并发编程详解:十三个工具类,十大设计模式,从理论基础到案例实战
如何高效部署分布式消息队列?这份《RabbitMQ实战》绝对可以帮到你