首页 > 编程语言 > 详细

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

时间:2021-06-07 20:33:55      阅读:24      评论:0      收藏:0      [点我收藏+]

数组

给定一个数组如:

 

技术分享图片

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删除

 

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

技术分享图片

 技术分享图片

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

 

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

原文:https://www.cnblogs.com/bluecore/p/14859415.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!