1. 什么是数据结构
数据结构是用来存储和组织数据的仓库,是一种计算机高效获取和更新数据的方式。根据你的项目需求,找到合适的数据结构至关重要。比如,你想存储序列数据,那么你可以将数据存储在 Array
数据结构中:
2. 数据结构类型
基本上,数据结构有两种类型:
- 线性数据结构
- 非线性数据结构
2.1 线性数据结构
线性数据结构中,数据是以一个数字接一个数字排列的形式组织起来的。典型的线性数据结构有:
2.1.1 数组 Array
数组数据结构中,数据排列在连续内存中,所有的元素都有相同的数据类型。而数据的具体形式由不同的编程语言决定,比如 Python
中,可以用 list
和 array
来实现。
2.1.2 堆栈 Stack
在堆栈数据结构中,数据以 LIFO 的原则进行存储,即后存进去的数据会先被删除。就像堆盘子,最后放上去的盘子会首先被拿下来。
2.1.3 队列 Queue
与堆栈数据结构相反,队列数据结构是以 FIFO 原则进行数据存储,即先进先出。就像排队,先排队的人先取到票。
2.1.4 链表 Linked List
链表中的每个元素都可以通过一系列的节点与其他元素相连,并且每个节点都包含元素本身以及下一个节点的地址。
2.2 非线性数据结构
非线性数据结构中的数据是无序的,且一个元素可以与其他元素相连。非线性数据结构主要有两种:
- 图数据结构
- 树数据结构
2.2.1 图数据结构
图数据结构中,每个节点称为“顶点”(vertex),顶点与顶点通过“边”相连。
常见的图数据结构包括:
- Spanning Tree and Minimum Spanning Tree
- Strongly Connected Components
- Adjacency Matrix
- Adjacency List
2.2.2 树数据结构
与图类似,树也是由顶点和边将数据组合在一起的。但是在树结构中,两个顶点只能有一条边。
常见的树数据结构有:
- Binary Tree
- Binary Search Tree
- AVL Tree
- B-Tree
- B+ Tree
- Red-Black Tree
2.3 线性数据结构 vs 非线性数据结构
线性数据结构 | 非线性数据结构 |
---|---|
数据按照一定顺序组织起来 | 数据是无序的 |
数据只有一层 | 数据有多个层级 |
只有一条路径可以遍历所有数据 | 通常需要多条路径遍历所有数据 |
内存使用率不高 | 不同的结构有不同的内存使用率 |
时间复杂度随数据量线性增加 | 时间复杂度保持不变 |