当前位置:
文档之家› 第一章_数据结构----绪论
第一章_数据结构----绪论
1-2-2 实例分析
例 1-4 复数关系的定义。 数据结构: Complex=(C,R)。 其中,C 是两个实数集合 {c1,c2};R 是定义在 C 上的一种关系,即 R={P}={<c1,c2>}。其 中,序偶< c1,c2>中的 c1 表示复数的实部,c2 表示复数的虚部。 例 1-5 事务管理程序中的课题小组信息的数据结构。假设 1 位老师带 1~3 名研究生,1 位研究生带 1~6 位学生,则数据结构 如下: Group=(P,R)。 其中,P={T,G1,…,Gn,S11,… Snm,1<=n<=3, 1<= m<=2} R={R1, R2} R1={<T, Gi>|1<=i<=n,1<=n<=3} R2={<Gi,Sij>|1<=i<=n, 1<=j<=m, 1<=n<=3, 1<=m<=2}
数学与软件科学学院信息与计算科学专业 2006-2007 年第 1 学期《数据结构》教案-详案-2004 级 6 班
课程导入
课程性质: 专业必修课 总学时数: 20*3=60 学时 上机学时: 18*2=36 学时 假设前提: 已有程序设计基础(C/C++基础,尤其是 C 语言程序设计基础) 学习目标: 培养数据抽象能力(Data Abstraction Ability) 。 注:C 程序设计 课则是培养结构化程序设计的能力。 具体涉及两个方面内容的学习和训练: 1) 学会分析研究计算机加工数据结构的特征,以便学会 针对不同的应用问 题,选择合适的逻辑结构、存储结构及相应的算法描述 。并做相应的 时间复杂 度和空间复杂度的分析。 2) 复杂程序设计方法的训练过程。学会将问题求解的程序设计成结构清楚、 正确、符合软件工程规范的系统。 学习方法: 勤奋练习,积极上机实践。( 熟悉各种数据结构的基本思想和算 法描述,并不断尝试结合教材内容和课外训练的数据抽象能力的培养) 教学步骤:整体上分为两个部分内容,一是数据结构的基本思想、方法与应 用技巧,二是上机实践。 具体内容: 第一章 绪论 第二、三、四、五、六、七章 基础(强调从 ADT 的角度进行描述的思想) 第八章 OS/Compiler 中的动态存储管理技术 (×) 第九、十章 查找/内排序 第十一章 外排序(×) 第十二章 文件结构(×) 注:由于学时数的限制,第八章、第十一章和第十二章暂时不做要求。其它 章节中,带**号的章节不做要求或不做考试要求。
作者:冯山
数学与软件科学学院信息与计算科学专业 2006-2007 年第 1 学期《数据结构》教案-详案-2004 级 6 班
(6) 数据元素之间关系的两种映射方法 顺序映射 ----顺序存储结构。 借助元素在存储器中存储的相对位置关系来表示数据元素 之间的逻辑关系。 非顺序映射 ----链式存储结构。 借助指示元素存储地址的指针来表示元素之间的逻辑关 系。 注:数据的逻辑结构与物理结构是紧密相关的。一般来将,任何一个算法的设计取决 于其数据的逻辑结构,而算法的实现取决于其数据的存储结构。 (7) 虚拟存储结构 ----存储结构的基于高级程序设计语言的描述方法 通过高级语言的数据类型来描述。 DS C 语言 OS Hardware 物理存储结构 虚拟存储结构 例如:一维数组用于描述顺序存储结构;指 针用于描述链式存储结构;struct, union 等用来表 示复杂问题的数据结构。 DS 中的虚拟存储结构在计算机系统中的层 次位置如图 1-3 所示。
课程材
《数据结构》 ,严蔚敏,吴伟民 编著,北京:清华大学出版社,2003 年 3 月
参考书目
(1) 《计算机算法:设计和分析引论》 ,[美] S 巴斯, 朱洪 等译,上海:复旦 大学出版社,1985 (2) 《Data Structures with C++》,[美] William Ford, William Topp, 北京:清华 大 学 出 版 社 , Printice-Hall International, inc. 1998 年 4 月 , ISBN 7-302-02413-8 (3) 《数据结构、算法与应用----C++语言描述》 ,[美] Sartaj Sahni 著,汪诗林,
作者:冯山
数学与软件科学学院信息与计算科学专业 2006-2007 年第 1 学期《数据结构》教案-详案-2004 级 6 班
结构就是其检索问题中的基本数据关系的数学模型 ( 此为 线性的结构关系模型 ) 。( 见教材 P1-2) 例 1-3 人机对弈问题。 其对弈策略、规则驱动、棋盘状态、前景预测方法等模型的建立,同时,棋盘状态描述 模型是对弈问题的关键性数据描述模型, 但棋局之间的关系往往不是线性的, 需要用非数值 型结构来描述。例如:#字游戏问题( 见教材 P2) 。需要用到所谓“树结构”来描述这些棋盘 状态之间转换过程。 例 1-4 多叉路口交通灯的管理问题( 在多叉路口需要设多少颜色的灯,使得车辆之间互 不碰撞,同时车流量最大) (见教材 P2-3) 对图的顶点作图的问题。 与此相关的还有如哥黎斯堡七桥问题、逻辑电路设计问题等,用传统的数学模型是无法 描述的。必须用新型的所谓“图结构” 进行描述。
1-1 什么是数据结构?
Data Structure (DS): Data---- (1) facts; (2) Information prepared for or stored by a computer; Structure---- way in which something is put together, organized, built, etc.
1-1-1 不同问题的数据结构模型构建实例分析
用计算机解决问题的步骤: 抽象其数学模型求解该模型的算法编制程序 测试或调 试 得解 (1) 对数值计算问题 例 1-1 求解梁架结构中应力的数学模型 ;预报人口增长的微分方程模型 。 其关键在于分析问题,提取或寻找对象之间的结构关系,然后用数学语言加以描述。 (2) 对无法用数学模型描述的非数值计算问题 其数学模型集中在数据结构的建立中。 例 1-2 图书馆书目检索系统自动化问题。 按书名的索引表、按作者名的索引表、按分类号的索引表、按登录号排列的书目表表示
1-2-3 其它概念与术语
(1) 逻辑结构 (Logical Structure)--- 描述数据元素之间的逻辑关系的结构。 (2) 物理结构 (Physical Structure)---- 描述数据元素在计算机中的实际存储映射关系的 结构,又称存储结构。 存储结构一般包含两个部分的内容 :一是数据元素的存储,二是数据元素之间关系的 存储。 (3) 容量单位问题 Byte, bit, KB, MB, GB, TB (4) 数据域 (Data Field)----当数据元素由若干个数据项组成时,各数据项位串被称为数 据域。 (5) 数据节点 (Node)----既数据元素。
1-2 数据结构中涉及的基本概念与术语 1-2-1 基本概念和术语
(1) Data----(facts/information)能被计算机处理的符号总称,是待加工的 “原料 ” 例如: 求解代数方程组时的 Data 为 integer/real 型的系数或根等; 编译器的 Data 为:程序代码或字符序列; 文字编辑器的 Data 为:字符、图形等。 (2) Data Element----对数据进行处理的基本单位 例如: 前述的棋盘之格局;图中的顶点等。 注:数据元素一般由若干数据项 (Data Item)组成。
习题及实验参考书
(1) 《数据结构实验教程》(C 语言版),王玲 主编,成都:四川大学出版社, 2003 年 7 月 (2) 《数据结构习题集》(C 语言版),严蔚敏,吴伟民 编著,北京:清华大 学出版社,2003 年 1 月
第一章 绪论
需要对程序的处理对象进行组织研究的两大主要原因: 一是 计算机领域的渗透早已使其应用不再局限于早期的科学计算领域 其加工处理对 象由纯粹的数值类发展到具有一定结构的数据类型 ,如字符、表、图形、图像、声音等, 使得程序设计活动面临了许多新的问题需要解决 。 二是 要编写出好的程序系统 ,人们发现,必须要对待处理对象的数据特性、各处理对象 之间的关系进行分析、组织 ,使编写出的程序能够有效地处理和解决它们。 它们构成了数据结构的研究动力和研究内容。
1-1-2 DS 课程的研究内容及课程历史
DS 研究内容: 研究非数值计算的程序设计问题中计算机的操作对象以及它们之间关系 和操作的一门学科课程。 DS 作为一门独立课程的发展历史: 1968 年,DS 与图论、表、树为“同义语” 。后来,扩充到了网络、集合代数、格、关系 等(它们又构成了“离散数学”的基础内容)。再后来,将大型数据库系统中的文件管理以及 内 存管理等技术也纳入了本课程中来。 《计算机程序设计艺术》(第一卷) ,Donald Knuth 1 (Turing 奖获得者)(开创 了最初的 DS 体系, 是第一本系统阐述数据的逻辑结构、 存储结构及其操作的著作) 目前,DS 是许多专业的选修或必修课。 DS 课程的地位(综合性非常强)( 见教材 P4 图 1.4):界于数学、计算机软件和 计算机硬件之间的核心课程。既是一般程序设计的基础,更是编译程序、OS、DBS 及其它大 型的系统程序和应用程序设计与实现的重要基础 。 发展方向: 1) 向各专门领域中的特殊问题之数据结构研究发展; 2) 从 ADT 观点来研究。
1
作者:冯山
数学与软件科学学院信息与计算科学专业 2006-2007 年第 1 学期《数据结构》教案-详案-2004 级 6 班
又如: 前述图书书目中的书卡数据 由作者姓名、书名、书号 等数据项 构成。 (3) Data Object----相同性质的数据元素之集合 例如: 整数数据对象即集合 N {0,1,2,...} ;字母字符对象即 C {' A' , ' B' ,...} ;计 算机信息与计算科学专业 2003 级学生对象即全体该班的学生集合等。 (4) Data Structure----相互之间存在某种特定关系的数据元素之集合 (从操作对象抽象出 来的数学模型 ) 注 1 :DS 中的数据元素不是孤立存在的; 注 2 :数据元素之间的关系即可称为“结构” ; 注 3 :数据元素之间的关系有 4 种基本结构: 集合(set)关系----无序的松散关系; 线性(linear)关系----一一对应关系(one-one); 树 (tree)关系 ----一对多关系 (one-many); 图 (graph)关系或者网(net)关系 ----多对多关系(many-many)。 (如教材 P5 图 1.5 所示) 注 4 : DS 的形式定义为: D_S=(D,S)。其中, D 为数据对象有限集合, S 为 D 上的关 系有限集合。 注 5 :一般而言, DS 要表达的是一组具 有相同结构的数据对象之值的集合。