- 3
- 0
- 约8.87千字
- 约 42页
- 2017-07-26 发布于河北
- 举报
ch01-绪论amp;线性表(old).ppt
绪论 绪论 学科形成背景 复杂非数值处理应用出现,数据量大 学科地位 程序=数据结构 + 算法 核心问题 对具体问题提取数据对象并定义对象间的关系和操作 学习目的 培养数据抽象能力 绪论 数据结构的概念 数据结构的三个研究方面 数据的逻辑结构(算法设计的基础) 数据的存储结构(算法实现的基础) 数据的操作算法 术语 数据 计算机化的信息。如数字、文字、图像等 数据元素(元素、结点) 信息处理的基本单位。如书本、学生等 数据项(域、属性) 不可再分的数据单元。如书号、书名等 数据对象 数据元素的集合。如书库等 术语 数据的逻辑结构 数据元素集合及元素间的相互关系 按元素间的关系分类 集合:元素间相互独立 线性结构:元素间一对一关系 非线性结构: 树形结构:元素间一对多关系 图形结构:元素间多对多关系 逻辑结构的形式定义 D_S = (D, S),即由元素集D和关系集S组成的二元组 术语 例如 复数 Complex = (D, S) D = {d1, d2} //实部,虚部 S = {d1, d2} 研究小组 Group(D, S) D = {T, G1, …, Gn, S11, … , Snm} S = {S1, S2} S1 = {T,Gi | 1=i=n} S2 = {Gi, Sij | 1=i=n, 1=j=m } 术语 数据的存储结构 数据的逻辑结构在计算机中的表示 分类 顺序存储结构 逻辑上相邻的元素存放在相邻的存储单元 链式存储结构 每个元素附加指针字段,用以表示元素间的逻辑关系 术语 数据类型 数据特性的描述,包括值的集合及相关操作 基本数据类型 不同语言中有不同的定义,如 整型、实型、布尔型、字符型、枚举型、数组等 结构类型 包含多个域,如 typedef struct{ char * name; int age; }Student; 抽象数据类型(ADT) 包括两方面内容的描述 数学模型及相关操作的定义 数学模型及相关操作的表示与实现 ADT的形式定义 抽象数据类型(ADT) 例如 ADT 成绩表 { D = {d1, … , dn}//n个学生的成绩 S = {di, di+1 | di di+1} P: Input(…); Insert(…); Delete(…); Search(…); } ADT 成绩表; 抽象数据类型(ADT) 用类C语言表示ADT C语言的核心子集,稍加扩充 预定义的常量和类型 数据的存储结构用typedef 描述 基本操作用函数形式描述 算法和算法分析 算法 问题的求解过程 算法的特性 有穷性:在有限时间内完成 确定性:指令无二义性 可行性:语言支持并可实现 输入:零或多个 输出:一或多个 算法和算法分析 算法设计的要求 正确性:无编辑、编译错误,逻辑正确 可读性:注释齐备、风格良好 健状性:具有错误识别和报告功能 高效低耗:速度快,所需系统资源少 算法效率的度量 时间复杂度T(n):算法中基本操作的重复执行次数 考察算法最坏情况下的时间复杂度 只计阶数,如多项式阶O(nk),指数阶O(kn) 算法存储空间需求的度量 空间复杂度S(n):输入数据量大小,辅助空间多少 考察最坏情况下的空间占用量 算法分析 重要的数据结构 重要的数据结构 线性结构 线性表 顺序表 链表 特殊的线性结构 栈、队列、字符串、数组、广义表等 非线性结构 树 树、二叉树等 图 图、网等 线性表 线性表的特征 同一线性表中的元素具有相同特性(类型) 相邻元素间存在序偶关系 具有n个元素的有限序列(a1,…ai-1, ai, ai+1, …, an) 前驱元素/后继元素 线性表的长度:n 位序:i为元素ai在线性表中的位序 线性表的ADT定义 线性表的表示和实现 线性表的顺序表示和实现 线性表的链式表示和实现 线性表的顺序表示和实现 概念 也称顺序表 用一组地址连续的存储单元依次存储各元素 高级语言中常用静态数组来描述顺序表,但如果线性表大小未定,则可使用语言中提供的动态分配空间机制(如C的malloc,free)来定义 特点 各元素的存储位置容易计算,易于各元素的随机存取 即 Loc(ai) = Loc(a1) + (i-1)*L // L为各元素的存储单元大小 或 Loc(ai) = Loc(ai) + L 顺序表在更新(如插入、删除)时存在大量的元素移动 线性表的顺序表示和实现 线性表的顺序表示和实现 线性表的顺序表示和实现 线性表的顺序表示和实现 线性表的链式表示和实现 概念 线性表的链式实现又称为“链表” 元素间的逻辑关系由结点中的指针来指示,“位序”概念淡化,由“位置”概念代替 逻辑上相邻的元素在物理位置上不要求相邻 元
原创力文档

文档评论(0)