数据结构第一章学习
大纲
数据结构第一章
基本概念
- 数据:数据(Data)是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。
- 数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。
- 数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
- 数据对象:是性质相同的数据元素的集合,是数据的一个子集。
数据结构
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
逻辑结构
数据的逻辑结构有两个要素:一是数据元素;二是关系。
- 集合结构:数据元素之间除了“属于同一集合”的关系外,别无其他关系。
- 线性结构:数据元素之间存在一对一的关系。
- 树结构:数据元素之间存在一对多的关系。
- 图结构或网状结构:数据元素之间存在多对多的关系。
线性结构包括线性表,栈和队列,字符串,数组,广义表。非线性结构包括树,二叉树,有向图和无向图。
存储结构
把数据对象存储到计算机时,通常要求既要存储各数据元素的数据,又要存储数据元素之间的逻辑关系,数据元素在计算机内用一个结点来表示。
- 顺序存储结构:顺序存储结构要求所有的元素依次存放在一片连续的存储空间中。
- 链式存储结构:无需占用一整块存储空间。但为了表示结点之间的关系,需要给每个结点附加指针字段,用于存放后继元素的存储地址。
数据类型
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
数据类型
C语言除了提供整型、实型、字符型等基本类型数据外,还允许用户自定义各种类型数据,例如数组、结构体和指针等。
抽象数据类型
一般指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包括三部分:数据对象、数据对象上关系的集合以及对数据对象的基本操作的集合。
算法分析
算法的特性
- 有穷性
- 确定性
- 可行性
- 输入
- 输出
算法的优劣
- 正确性
- 可读性
- 健壮性
时间复杂度
- 顺序执行的代码只会影响常数项,可以忽略。
- 只需挑循环中的一个基本操作分析它的执行次数与n的关系即可。
- 如果有多层嵌套循环,只需关注最深层循环循环了几次即可。
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n^2)< O (n^3)< O (2^n)< O(n!)
空间复杂度
只需关注存储空间的大小与问题规模相关的变量。
如果内存空间大小是kn个字节,k是常数的话,那么用大O表示法S(n)=O(n)