数据结构-数组和链表原理简析
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删除
另外链表还分单向链表和双向链表
如果是双向链表在查询时,如果查询的元素位置离头结点近,则会从头结点开始查,如果离尾结点近,则会从尾结点开始依次查找
以上是关于数据结构-数组和链表原理简析的主要内容,如果未能解决你的问题,请参考以下文章