一:数据结构的概念
什么是数据结构?,个人理解,相互之间有一种或者多种关系的数据元素的集合。
1:数据结构:任何数据结构,都有数据的存储结构和数据的逻辑结构
- 数据的存储结构:数据在内存中怎么存储的
- 数据的逻辑结构:数据和数据之间的逻辑是什么关系
2:数据的存储结构
- 顺序存储结构:是把数据放在连续的连续的存储单元里
- 链式存储结构 :不连续
3:数据的逻辑结构
- 集合结构 : 数据元素都属于一个集合,并列关系
- 线性结构 :数据元素都是一对一的关系
- 树形结构 : 数据元素是一对多的关系
- 图形结构 :数据元素是多对多的关系
4:集合结构:暂无研究
5:线程结构
- 数组:是顺序存储结构
- 栈:先进后出。是顺序存储结构,底层是数据实现
- 队列:先进先出。是顺序存储结构,底层是数据实现
- 单链表:每一个节点都会记录下一个节点的位置。 底层是链表
- 循环链表: 每一个节点都会记录下一个节点的位置。第一个节点和最后一个节点相连 。 底层是链表
- 双链表:每一个节点都会记录上一个和下一个节点的位置 。 底层是链表
6:线性数据结构,底层要么是数组,要么是链表,他们有什么区别
1:数组:
数组是不可变得,数组一旦初始化大小,就不可以变化。数组的元素在内存中是有序的。
例如:int[] arr1 = new int[5]; 数组初始化是5,那么arr1这个数组大小就不可以被更改。只能给这个数组的那个元素修改内容。不能删除,添加
2:链表:
链表是可变的,链表的元素在内存中是无序的。
为什么说数组查询快,添加慢。说链表添加快,查询慢
这个和cpu的空间局部性有关。(去看下空间局部性和cpu的从缓存和内存中读取效率)