链表:由一系列结点node(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。
每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
我们常说的链表结构有单向链表与双向链表。
单向链表 特点(1)多个结点之间,通过地址进行连接
(2)查找元素慢:想查找某个元素,需要通过连接的节点,依次向后查找指定元素
(3)增删元素快:
有两个指针域分别指向前一个结点和后一个结点,还有一部分用来保存结点数据,初始化结点时需要将两个指针都指向空
1.增加结点。
增加结点时,需要将最后一个结点的next指针指向新结点,然后将新结点的prev指向最后一个结点
3.删除结点。
删除结点时需要将待删除结点的前一个结点的next指向待删除结点的后一个结点,然后,把后者的prev指针指向前者:
4.插入结点。
插入结点就是将新结点的前一个结点的next指针指向指向新结点,然后把新结点的next指针指向前一个结点原来后面的那个结点,然后把后面的结点的prev指针指向新结点,把新结点的Prev指针指向前一个结点。
数组数组:同一种类型数据的集合。
特点:(1)查找元素快:通过索引,可以快速访问指定位置的元素;
(2)增删元素慢
-
指定索引位置增加元素:需要创建一个新数组,将指定新元素存储在指定索引位置,再把原数组元素根 据索引,复制到新数组对应索引的位置。如下图
-
指定索引位置删除元素:需要创建一个新数组,把原数组元素根据索引,复制到新数组对应索引的位置,原数组中指定索引位置元素不复制到新数组中。如下图
1.链表是链式存储结构,数组是顺序存储结构;
2.链表通过指针连接元素,而数组则是把所有元素按顺序进行存储;
3.链表插入和删除元素不需要移动元素,数组删除和增加元素需要移动元素。
4.链表查找慢,增删快
5.数组查找快,增删慢
链表的作用链表就将一系列不连续的内存联系起来,将那种碎片内存进行合理的利用,解决空间的问题。
所以,链表允许插入和删除表上任意位置上的节点,但是不允许随即存取。
最大的作用:可以自动给数组中的元素从0开始编号,方便操作这些元素。



