数据结构序章
程序 = 数据结构 + 算法
数据结构主要学习什么?
- 数据之间的关系,将离散的数据规整划一。
- 如何将这个关系具体实现并存储到计算机中。
- 基于关系之上对数据的具体操作,增删查改等。
- 数据结构的具体使用场景。
一、数据结构有
-
基础结构:
线性表、栈、队列、双端栈、双端队列、循环队列、单向循环链表、双向循环链表、二分搜索、最小堆、最大堆 -
进阶结构:
Trie前缀树、线段树、并查集、AVL平衡树、哈希树 -
高级结构:
2-3树、红黑树、B树、B+树、多维数组、树状数组、伸展数、后缀树、树链剖分与动态树
二、数据之间的关系
1、数据们之间的关系—逻辑结构
定义:是指数据元素之间的相互关系,是我们想象出来的,并没有实质性的将其存储在计算机中。
- 线性结构:线性结构中的数据元素之间是一对一的关系
- 树形结构:树形结构中的数据元素之间存在一对多的层次关系。
- 图形结构:图形结构的数据元素是多对多的关系。
2、数据们之间的关系—物理结构
定义:是指数据的逻辑结构在计算机中的具体存储形式。
- 顺序存储结构:开辟一组连续的空间存储数据。(通常用数组来实现,数组中空间本身是连续的,保证了数据之间的关系)
- 链式存储结构:开辟一组随机的空间存储数据。(通常用节点来实现,节点不仅要存储数据还要存储下一个节点的位置以保证数据之间的关系)
三、数据结构
1、线性结构的物理存储方式
2、树形结构的物理存储方式
3、图形结构的物理存储方式