栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

面试官问:你说你计算机专业,连数据结构没有学过?链表和数组的区别与作用应该知道吧

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面试官问:你说你计算机专业,连数据结构没有学过?链表和数组的区别与作用应该知道吧

链表

链表:由一系列结点node(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。

每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。


链表是如何组成的:
首先有一个头节点, 其结点指向的是空地址,比如需要储存一个数据A,保存在地址11位置,那么如何将数据A连接到头节点上?数据D地址是96位置;数据C地址是37位置;数据C和D如何连接的呢

  1. 将头节点的结点指向的空地址改为11,这样A就可以连接上了
  2. 将A的下一个结点的地址改为37,这样就可以连接上数据C了
  3. 数据C的下一个结点的地址改为96,数据D就连接上了

最终效果如下:

我们常说的链表结构有单向链表与双向链表。

单向链表 特点

(1)多个结点之间,通过地址进行连接

(2)查找元素慢:想查找某个元素,需要通过连接的节点,依次向后查找指定元素

(3)增删元素快:

  • 举例:在下图所示的链表中进行增删元素
  • 在AC之间添加元素B,数据B保存在地址54位置

    步骤:

    1. 将数据B对应的下一个数据地址变为37,即C的地址
    2. 将数据A对应的下一个数据地址37改为54,即B的地址

最终结果:

  • 删除上面添加元素过后的列表的数据BD之间的数据C

    步骤:

    1. 将数据B对应的下一个数据地址由37改为96,即数据D的地址
    2. 将数据C删除

最终结果如下:

双向链表

有两个指针域分别指向前一个结点和后一个结点,还有一部分用来保存结点数据,初始化结点时需要将两个指针都指向空

1.增加结点。

增加结点时,需要将最后一个结点的next指针指向新结点,然后将新结点的prev指向最后一个结点


3.删除结点。

删除结点时需要将待删除结点的前一个结点的next指向待删除结点的后一个结点,然后,把后者的prev指针指向前者:

4.插入结点。

插入结点就是将新结点的前一个结点的next指针指向指向新结点,然后把新结点的next指针指向前一个结点原来后面的那个结点,然后把后面的结点的prev指针指向新结点,把新结点的Prev指针指向前一个结点。

数组

数组(Array):同一种类型数据的集合。是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素。

特点:

(1)查找元素快:通过索引,可以快速访问指定位置的元素;
查询数据通过索引定位,查询任意数据耗时相同,查询效率高

(2)增删元素慢
删除数据时,要将原始数据删除, 同时后面每个数据都需要(向前)移动,删除效率低

添加数据时,添加位置后的每个数据(后移)移动,最后再添加元素,添加效率极低

  • 指定索引位置增加元素:需要创建一个新数组,将指定新元素存储在指定索引位置,再把原数组元素根 据索引,复制到新数组对应索引的位置。如下图

    具体说明:往arr1中添加一个元素a4,没有顺序

    1. 创建一个新数组arr1,来存放添加完元素后的数组,数组长度为原数组长度加添加的元素个数,
    2. 先把arr按顺序储存入arr1,最后将a4储存入arr1中

    具体说明:往arr2中添加一个元素a4,将元素储存到索引为2的位置

    1. 创建一个新数组arr2,用来存放指定位置的的元素,数组长度为原数组加上元素的个数
    2. 先将新元素a4添加到指定位置,然后再去复制原数组中的数据

  • 指定索引位置删除元素:需要创建一个新数组,把原数组元素根据索引,复制到新数组对应索引的位置,原数组中指定索引位置元素不复制到新数组中。如下图

链表和数组的区别

1.链表是链式存储结构,数组是顺序存储结构;

2.链表通过指针连接元素,而数组则是把所有元素按顺序进行存储;

3.链表插入和删除元素不需要移动元素,数组删除和增加元素需要移动元素。

4.链表查找慢,增删快

5.数组查找快,增删慢

链表的作用

链表就将一系列不连续的内存联系起来,将那种碎片内存进行合理的利用,解决空间的问题。
所以,链表允许插入和删除表上任意位置上的节点,但是不允许随即存取。

数组的作用

最大的作用:可以自动给数组中的元素从0开始编号,方便操作这些元素。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/330730.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号