数据结构和算法基本概述
数据结构和算法的关系:
数据结构是一门研究数据以什么方式进行组织。数据结构是算法的基础,学好数据结构并不一定就学的好算法。要学好算法必须先学数据结构。
例如,学好了数组不一定学得会归并排序算法。
程序 = 算法 + 数据结构
数据结构包括线性结构和非线性结构
线性结构(最常用
)
线性结构有两种不同的存储方式:
- 顺序存储方式
- 链式存储方式
线性结构的特点:数据元素之间存在一对一关系
比如:数组 a[0] = 30;
描述:当下标为0时,就唯一对应30,这就叫一对一的线性关系
何为顺序存储方式?
即:顺序表,顺序表中的存储元素是连续的,在内存分配时地址是连续的
比如:数组就是顺序表,是连续的。
画图分析:
何为链表存储方式?
即:链表,链式存储存储的元素不一定是连续的,有可能是连续有可能不一定是连续的,每一个数据相当于一个结点,结点关系是靠地址连起来的。
如:单链表、双向链表
链表好处:可充分利用碎片内存,因为地址是不连续的
画图分析:常见的线性结构
:数组、队列、链表、栈(最常用的4种)
队列分为单向队列、环形队列,链表分为单链表、环形链表和双向链表,栈可以用数组| 链表实现
非线性结构
非线性结构的特点:数据元素之间不是一对一关系
比如,一个结点可能有多个结点,甚至还可能有更多结点
画图分析:
非线性结构常用的有
:二维数组、多维数组、广义表、树结构、图结构
其中图结构和树结构是非线性结构中用的最多的,树结构和图结构与很多算法是关联的