数据结构-数组和链表原理简析

Posted yyyzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构-数组和链表原理简析相关的知识,希望对你有一定的参考价值。

数组

给定一个数组如:

 

1.查询数据:

查询数据可通过集合的索引直接定位,当查询索引为1的元素时,直接定位并取出元素B,查询任意数据耗时相同,查询速度快

2.删除数据:

当要删除此集合中的元素B时

删除前

删除后

删除数据时,要将原始数据索引为1的B删除,则后面的数据C、D、E、F、G都会前移,移到对应的索引为1、2、3、4、5的位置(数组在内部的存储空间是连续的),删除效率低

3.添加数据:

当要向此集合中添加元素B时

添加前

 

添加后

 

同删除方法类似,当需要把B元素添加到索引为1的位置时,会先将要插入位置后面的数据C、D、E、F、G都同时后移一个位置(数组在内部的存储空间是连续的),然后把B添加进去,当插入位置后面的数据很多时,添加效率会很低

链表

先看下链表结点长什么样子

 

一个结点包括该结点的存储地址,该节点存储的数据以及下一个节点的地址,另外每个链表刚创建时都会有一个自己的头结点,如果头结点指向的节点为尖角号,则表示后面没有数据

1.查询数据:

给定一个链表,头结点head指向下一个数据A结点的存储地址11,同时A结点指向下一个数据C结点的存储地址37,C结点指向下一个数据D结点的存储地址94,D结点后面不再有数据

链表的查询数据会先从head结点依次向后找,依次顺序为数据A、数据B、数据C直到最终数据D为止,如果中间找到则停止

2.添加数据

添加前

添加后

 

把数据B插入数据A和数据C之间时,改变A结点原来指向结点C的地址值37改为指向B结点54,使A指向B;并把B结点指向的下一个位置改为C结点的地址值37,B指向C

3.删除元素

删除前

删除后

删除数据C只需要把原来B指向C的地址值37改为D的地址值96即可,数据C删除

 

另外链表还分单向链表和双向链表

 

如果是双向链表在查询时,如果查询的元素位置离头结点近,则会从头结点开始查,如果离尾结点近,则会从尾结点开始依次查找

 

以上是关于数据结构-数组和链表原理简析的主要内容,如果未能解决你的问题,请参考以下文章

浅谈数组和链表

数组和链表区别

3.数组和链表

数据结构之顺序表(数组)和链表

面试提问-数组和链表的区别

数据结构与算法—数组栈和链表栈