全书链接: 408笔记——数据结构(C语言版)(将书上例题用C语言列出来,可以直接在IDE(Xcode)上运行)
文章目录
1.1 什么是数据结构
数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科
程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法
1.2 基本概念和术语
数据:是对客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。是计算机加工的原料
数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
数据项:一个数据元素可由若干个数据项组成,数据项是数据的不可分割的最小单位。
数据对象:是性质相同的数据元素的集合,如整数数据对象
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
数据元素之间的关系称为结构,4类基本结构:
集合,线性结构,树形结构,图状结构或网状结构
逻辑结构:对操作对象的一种数学描述,或说是从操作对象抽象出来的数学模型
计算机中:
物理结构(又叫存储结构):数据结构在计算机中的表示(又称映像),它包给数据元素的表示和关系的表示。
位(bit)
元素(或结点):位串
数据域:子位串
顺序映像 非顺序映像
顺序存储结构 链式存储结构
任何一个算法的设计取决于选定的数据(逻辑)结构,二算法的实现依赖于采用的存储结构
数据类型:
值的集合(整型) 一组操作(加减乘除)
原子类型(基本类型):不可分
结构类型:可分,数据结构+操作
抽象数据类型(Abstract Data Type,简称ADT):是指一个数学模型以及定义在该模型上的一组操作:
原子类型 固定聚合类型 可变聚合类型
数据对象
数据关系
基本操作
多形数据类型:是指其值的成分不确定的数据类型
1.3 抽象数据类型的表示与实现
1.4 算法和算法分析
1.4.1 算法
算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作
算法特性:有穷性 确定性 可行性 输入 输出
1.4.2 算法设计的要求
(1)正确性
通常衡量一个程序是否合格的标准:程序对于精心选择的典型,苛刻而带有刁难性的几组输入数据能够得出满足规格说明要求的结果
(2)可读性
易于人阅读和交流
(3)健壮性
当输入数据非法时,算法也能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果
(4)效率与低存储量需求
解决同一问题
效率:算法执行的时间 尽可能少
低存储量:算法执行过程中所需要的最大存储空间 尽可能小
1.4.3 算法效率的度量(时间复杂度)
可以认为一个特定算法“运行工作量”的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数
以基本操作(原操作)重复执行的次数作为算法的时间量度
基本操作多数情况下是最深层循环内的语句中的原操作