常见数据结构
数据结构概述
- 数据结构是计算机底层存储,组织数据的方式,是指数据相互之间是以什么方式排列在一起的
- 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率
栈
-
栈执行特点
-
先进后出,后进先出
类似一个器皿,顶部的拿出后才能拿下面的
-
栈数据结构:一端开口,称之为栈顶;一端封闭,称之为栈底
数据进入栈模型的过程称之为:压栈 或 进栈
数据离开栈模型的过程称之为:弹栈 或 出栈
队列
-
队列执行特点
-
先进先出,后进后出
类似于排队,先进先出水
-
队列数据结构:两端开口,上端称为后端,下端称为前端
数据从 后端 进入队列模型的过程称为:入队列
数据从 前端 离开队列模型的过程称为:出队列
数组
数组是内存中的一块连续区域;是一种根据索引查询快,增删慢的模型
-
特点
-
查询速度快:查询数据通过地址值和索引定位,查询任意数据耗时相同(元素在内存中是连续存储的)
只是根据索引查询快
删除效率低:要将原始数据删除,同时后面每个数据前移
添加效率极低:添加位置后的每个数据后移,再添加元素
-
链表
- 链表的特点
链表中的元素是在内存中不连续存储的,每个元素节点包含数据值和下一个元素的地址
链表查询慢,无论查询哪个数据都要从头开始找(且即便它拥有索引,仍然很慢,因为无法知道索引的位置,只知索引的编号)
-
链表增加、删除操作相对较快(对于数组而言)
这里指代增删的那一刻比较快,因为只需要修改目标元素的前后元素的索引即可完成增删;
但是,在增删之前需要先找到前后元素,这个查询操作非常慢 -
链表的种类
- 单向链表:只支持从前往后找(单向链表拥有尾地址)
- 双向链表:支持从前往后、从后往前查找(双向链表拥有头地址和尾地址)
-
小结:数组根据索引查询元素的速度很快;双向链表增删链表首位的元素速度很快
双链表可以说是队列和栈的结合体,因为它也完成了二者的结构