数据结构PPT 绪论
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构(C语言版) 任课教师:冯 向阳
教学计划安排
• 开课周次:1-17周
–周一:5、6节,松1350 –周五:3、4节,松1350
• 上机实践:3-16周
–周五:3、4节,计258(待定)
• 期终考试形式:
–开卷考试; –具体题型包括:填空、选择、判断、写算法等。
本课程成绩计算
• • • • 平时作业占10% 上机实践占20% 期终考试占70% 平时出勤若无故缺席n次,则在学期总分中 扣n分
非数值性计算(举例1)
学号
99070101 99070102 99070103 99070104
学生基本情况 姓名 性别 出生年月
李俊 王力强 杜汇军 林阳 …… 男 男 男 女 …… 1980.12 1981.2 1981.3 1981.5 ……
……
…… …… …… …… ……
……
非数值性计算(举例1)
抽象数据类型
• 抽象数据类型(Abstract Data Type 简称ADT):
– ADT是指一个数学模型以及定义在此数学模型上的一 组操作。
• ADT的两个重要特征:
– 数据抽象:用ADT描述程序处理的实体时,强调的是 其本质的特征、其所能完成的功能以及它和外部用户 的接口(即外界使用它的方法)。 – 数据封装:将实体的外部特征和其内部实现细节分离, 并且对外部用户隐蔽其内部实现细节。
– 当操作对象的关系更加复杂,操作形式不再是单纯的 数值计算,而更多地是对这些具有一定关系的数据进 行组织、管理和检索,就需要对之进行非数值性处理。 – 当计算机进入非数值计算领域,特别是用在管理上的 时候,计算机的操作对象之间的关系就无法用数学方 程加以描述了。
• 应用举例1 —— 学籍档案管理
– 假设一个学籍档案管理系统应包含如下页的表所示的 学生信息。
a1 a4
a2 a5
a3 a6
≠
a1 a2
a3 a4
a5 a6
数据的逻辑结构
• 数据的逻辑结构(logic structure)
– 数据元素和数据元素之间的逻辑关系成为数据的逻辑 结构。 – 如下的表格数据中,各数据元素之间在逻辑上有一种 线性关系。
数据的逻辑结构的分类(续)
• 数据的逻辑结构可归结为以下四类:
– 数值计算问题的数学模型通常可以用一组线性或非线 性的代数方程组或微分方程组来描述。 – 即使是不需要用计算机求解的简单问题也需要一个数 学模型来描述。
• 鸡兔同笼问题:二元一次方程组 • 房屋设计或桥梁设计中的结构应力分析:线性代数方程组 • 天气预报:环流模式方程
非数值性计算
• 非数值性计算:
第1章 绪论
• 教学内容:
–数据结构基本概念:数据、数据元素、数据对象、数 据结构和数据类型等概念。 –算法及算法分析:性能分析与度量:算法的性能标准; 空间复杂度度量;时间复杂度度量。
• 教学要求:
–了解数据、数据对象、数据元素、数据类型、数据结 构、数据的逻辑结构与物理结构概念及逻辑结构与物 理结构间的关系。 –了解算法的定义、算法的特性、算法的时间代价、算 法的空间代价。 –掌握计算语句频度和估算算法时间复杂度的方法。
数据元素之间的关系
• 数据元素和数据元素之间存在次序关系
– 例如,一个含12位数的十进制数可以用三个4 位的十进制数来表示。
3214,6587,9345 => a1(3214),a2(6587),a3(9345) 在a1、a2和a3之间存在次序关系:<a1,a2>、<a2,a3> 3214,6587,9345 ≠ 6587,3214,9345 a1 a2 a3 a2 a1 a3
基本概念和术语(数据项)
• 数据项(data item)
– 一般情况下,一个数据元素中含有若干个字段,也称 为数据项。数据元素是数据项的集合。 – 数据项是数据结构中讨论的最小单位。
基本概念和术语(关键字、数据对象)
• 关键字:
– 指的是能识别一个或多个数据元素的数据项。 – 若能起唯一识别作用,则称之为主关键字,否 则称之为次关键字。
数据项之间的关系
• 数据项和数据项之间存在次序关系
– 又例,2行3列的二维数组{a1,a2,a3,a4,a5,a6} a1 a4 a2 a5 a3 a6
行的次序关系: row = {<a1,a2>, <a2,a3>, <a4,a5>, <a5,a6>} 列的次序关系: col = {<a1,a4>, <a2,a5>, <a3,a6>}
C4 C5 C7
C2
C1
C3 C12 C9 C8
C10
C6 C11
非数值性计算(举例3)
• 特点:
– 课程之间的先后关系用图结构描述。 – 通过实施创建图结构,按要求将图结构中的 顶点进行线性排序。
• 结论:
– 以上所举例子中的数学模型正是数据结构要 讨论的问题。因此,简单地说,数据结构是 一门讨论描述现实世界实体的数学模型(非数 值计算) 及其上的操作在计算机中如何表示和 实现的学科。
课程名称
程序设计基础 离散数学 数据结构 汇编语言 算法分析与设计 计算机组成原理 编译原理 操作系统 高等数学 线性代数 普通物理 数值分析
需要的先导课程编号
无 C1 C1,C2 C1 C3,C4 C11 C5,C3 C3,C6 无 C9 C9 C9,C10,C1
非数值性计算(举例3)
图1-2 课程先后关系的图形描述形式
– Algorithm + Data Structures = Programs 算法 + 数据结构 = 程序设计
处理问题的策略 问题的数学模型 为计算机处理问题编制一组按照人 的意志执行的指令
数据结构的发展史
• 数据结构作为一门独立的课程在国外是从1968年才开始设 立的。 • 1968年美国唐· 克努特教授开创了数据结构的最初体系, 欧· 他所著的《计算机程序设计技巧》第一卷《基本算法》是 第一本较系统地阐述数据的逻辑结构和存储结构及其操作 的著作。 • 早期:主要用于数值计算。 • 后来:处理逐渐扩大到非数值计算领域(能处理多种复杂 的具有一定结构关系的数据)。
• 应用举例3:制定教学计划
– 在制定教学计划时,需要考虑各门课程的开设顺序。 有些课程需要先导课程,有些课程则不需要,而有些 课程又是其他课程的先导课程。比如,计算机专业课 程的开设情况如下页的表所示。
非数值性计算(举例3)
计算机专业学生的必修课程 课程编号
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12
线性结构 树形结构
图状结构
集合结构
数据的逻辑结构的分类
• 数据的逻辑结构可归结为以下四类:
– 线性结构:结构中的数据元素之间存在一个对 一个的关系。 – 树形结构:结构中的数据元素之间存在一个对 多个的关系。 – 图状结构:结构中的数据元素之间存在多个对 多个的关系。 – 集合结构:结构中的数据元素除了同属于一个 集合的关系外,别无其他关系。
– 编译程序利用堆栈、符号表和语法分析树; – 操作系统由过程并列表和文件支持,并利用由可用空间的并列表 或表格组成的存储管理模式; – 人工智能程序利用堆栈、队列、集、搜索树、表格和图; – 数据库利用串、并列表、树、环和表格。
数值性计算
• 数值性计算:
– 数值计算解决问题的一般步骤:
数学模型→选择计算机语言→编出程序→测试→最ห้องสมุดไป่ตู้解答
• 特点:
– 每个学生的信息占据一行,所有学生的信息按 学号顺序依次排列构成一张表格。 – 表中每个学生的信息依据学号的大小存在着一 种前后关系,这就是我们所说的线性结构。 – 对它的操作通常是插入某个学生的信息,删除 某个学生的信息,更新某个学生的信息,按条 件检索某个学生的信息等等。
非数值性计算(举例2)
– 用高级语言程序设计语言进行编程时,通常可用该语 言提供的数据类型来描述。
• 不同的数据结构其操作集不同,但下列操作必不 可缺:
–结构的生成; –结构的销毁; –在结构中查找满足规定条件的数据元素; –在结构中插入新的数据元素; –删除结构中已经存在的数据元素; –遍历。
数据类型
• 数据类型:
– 是指程序设计语言中各变量可取的数据类型。数据类 型是高级程序设计语言中的一个基本概念,它和数据 结构的概念密切相关。 – 一方面,在程序设计语言中,每一个数据都属于某种 数据类型。类型明显或隐含地规定了数据的取值范围、 存储方式以及允许进行的运算。可以认为,数据类型 是在程序设计中已经实现了的数据结构。 – 另一方面,在程序设计过程中,当需要引入某种新的 数据类型时,总是借助编程语言所提供的数据类型来 描述数据的存储结构。
基本概念和术语(数据)
• 数据(data)
– 数据是对客观事物的符号表示。在计算机科学中,其 含义是指所有能够输入到计算机中并被计算机程序处 理的符号集合。 – 例如,一个个人书库管理程所要处理的数据可能是下 表所示的表格。
基本概念和术语(数据元素)
• 数据元素(data element)
– 数据元素也称为结点,是数据集合中的一个实体,是 数据结构中讨论的基本单位。 – 数据元素按其组成可分为简单型数据元素和复杂型数 据元素。前者由一个数据项组成;后者由多个数据项 组成,它通常携带着一个概念的多方面信息。
• 顺序映像:顺序存储结构 • 非顺序映像:链式存储结构。
数据的存储结构(续)
• 顺序存储结构:
– 特点是借助于数据元素的相对存储位置来表示数据元 素之间的逻辑结构。
x y
• 链式存储结构:
– 特点是借助于指示数据元素地址的指针来表示数据元 素之间的逻辑结构。
y x
数据的存储结构(续)
• 在不同的编程环境中,存储结构可有不同的描述 方法。
• 数据对象:
– 是具有相同特性的数据元素的集合,如:整数、 实数等。它是数据的一个子集。
基本概念和术语(数据结构)
• 数据结构(data structure)
– 数据结构是以数据项为元素的一种结构。 – 数据结构的组成是由各数据项之间的关系和用 来存储、恢复这些数据项的存取函数来确定的。 – 为了叙述上的方便和避免产生混淆,通常把数 据的逻辑结构(logic structure)统称为数据结构, 把数据的物理结构统称为存储结构(storage structure)。
数据结构的形式定义
• 数据结构的形式定义为:
– 数据结构是一个二元组: Data_Structure = (D,S) 其中: D是数据元素的有限集,S是D上关系的有限集。 – 严格地讲,以上定义仅是数据的逻辑结构的定义。 – 例如,在计算机科学中,复数可看成一种数据结构 Complex = (C,R) 其中,C是含两个实数的集合{c1,c2};R = {P},而P 是定义在集合C上的一种关系{<c1,c2>},其中有序偶 <c1,c2>表示c1是复数的实部,c2是复数的虚部。
本课程的内容及学习的基本方法
• 本课程讲述的主要内容:
– 将分别讲述数据结构的基本概念、线性表、栈和队列、 树型结构、图结构、查找、排序等内容。
• 学习本课程的基本方法:
– 上课认真听讲。 – 仔细阅读教材中的大量例题,从而体会并掌握数据结 构中的基本概念。 – 独立认真地完成课堂作业。 – 独立认真地完成上机实践。
数据结构讨论的范畴
• 《数据结构》是计算机相关专业的一门重要的专业基 础课。它主要研究计算机加工对象的逻辑结构、在计 算机中的表示形式以及实现各种基本操作的算法。它 是学习操作系统、编译原理、数据库原理等计算机专 业核心课程的基础,掌握好这门课程的内容,是学习 计算机其他相关课程的必备条件。 • Nikalaus Wirth (Pascal语言之父)
• 应用举例2:输出n个对象的全排列
– 可以使用下面所示的图示描述。
1
12
21
312
132
123
321
231
213
3个对象的全排列过程
非数值性计算(举例2)
• 特点:
– 在求解过程中,所处理的数据之间具有层次关系,这 就是我们所说的树形结构。 – 对它的操作有:建立树形结构,输出最底层结点内容 等等。
数据的存储结构
• 数据的存储结构(storage structure)
– 是指数据结构在计算机中存储器中的具体实现。 – 与孤立的数据元素的表示形式不同,数据结构中的数 据元素不但要表示其本身的实际内容,还要表示清楚 数据元素之间的逻辑关系。 – 数据元素之间的关系在计算机中有两种不同的表示方 法:
教学计划安排
• 开课周次:1-17周
–周一:5、6节,松1350 –周五:3、4节,松1350
• 上机实践:3-16周
–周五:3、4节,计258(待定)
• 期终考试形式:
–开卷考试; –具体题型包括:填空、选择、判断、写算法等。
本课程成绩计算
• • • • 平时作业占10% 上机实践占20% 期终考试占70% 平时出勤若无故缺席n次,则在学期总分中 扣n分
非数值性计算(举例1)
学号
99070101 99070102 99070103 99070104
学生基本情况 姓名 性别 出生年月
李俊 王力强 杜汇军 林阳 …… 男 男 男 女 …… 1980.12 1981.2 1981.3 1981.5 ……
……
…… …… …… …… ……
……
非数值性计算(举例1)
抽象数据类型
• 抽象数据类型(Abstract Data Type 简称ADT):
– ADT是指一个数学模型以及定义在此数学模型上的一 组操作。
• ADT的两个重要特征:
– 数据抽象:用ADT描述程序处理的实体时,强调的是 其本质的特征、其所能完成的功能以及它和外部用户 的接口(即外界使用它的方法)。 – 数据封装:将实体的外部特征和其内部实现细节分离, 并且对外部用户隐蔽其内部实现细节。
– 当操作对象的关系更加复杂,操作形式不再是单纯的 数值计算,而更多地是对这些具有一定关系的数据进 行组织、管理和检索,就需要对之进行非数值性处理。 – 当计算机进入非数值计算领域,特别是用在管理上的 时候,计算机的操作对象之间的关系就无法用数学方 程加以描述了。
• 应用举例1 —— 学籍档案管理
– 假设一个学籍档案管理系统应包含如下页的表所示的 学生信息。
a1 a4
a2 a5
a3 a6
≠
a1 a2
a3 a4
a5 a6
数据的逻辑结构
• 数据的逻辑结构(logic structure)
– 数据元素和数据元素之间的逻辑关系成为数据的逻辑 结构。 – 如下的表格数据中,各数据元素之间在逻辑上有一种 线性关系。
数据的逻辑结构的分类(续)
• 数据的逻辑结构可归结为以下四类:
– 数值计算问题的数学模型通常可以用一组线性或非线 性的代数方程组或微分方程组来描述。 – 即使是不需要用计算机求解的简单问题也需要一个数 学模型来描述。
• 鸡兔同笼问题:二元一次方程组 • 房屋设计或桥梁设计中的结构应力分析:线性代数方程组 • 天气预报:环流模式方程
非数值性计算
• 非数值性计算:
第1章 绪论
• 教学内容:
–数据结构基本概念:数据、数据元素、数据对象、数 据结构和数据类型等概念。 –算法及算法分析:性能分析与度量:算法的性能标准; 空间复杂度度量;时间复杂度度量。
• 教学要求:
–了解数据、数据对象、数据元素、数据类型、数据结 构、数据的逻辑结构与物理结构概念及逻辑结构与物 理结构间的关系。 –了解算法的定义、算法的特性、算法的时间代价、算 法的空间代价。 –掌握计算语句频度和估算算法时间复杂度的方法。
数据元素之间的关系
• 数据元素和数据元素之间存在次序关系
– 例如,一个含12位数的十进制数可以用三个4 位的十进制数来表示。
3214,6587,9345 => a1(3214),a2(6587),a3(9345) 在a1、a2和a3之间存在次序关系:<a1,a2>、<a2,a3> 3214,6587,9345 ≠ 6587,3214,9345 a1 a2 a3 a2 a1 a3
基本概念和术语(数据项)
• 数据项(data item)
– 一般情况下,一个数据元素中含有若干个字段,也称 为数据项。数据元素是数据项的集合。 – 数据项是数据结构中讨论的最小单位。
基本概念和术语(关键字、数据对象)
• 关键字:
– 指的是能识别一个或多个数据元素的数据项。 – 若能起唯一识别作用,则称之为主关键字,否 则称之为次关键字。
数据项之间的关系
• 数据项和数据项之间存在次序关系
– 又例,2行3列的二维数组{a1,a2,a3,a4,a5,a6} a1 a4 a2 a5 a3 a6
行的次序关系: row = {<a1,a2>, <a2,a3>, <a4,a5>, <a5,a6>} 列的次序关系: col = {<a1,a4>, <a2,a5>, <a3,a6>}
C4 C5 C7
C2
C1
C3 C12 C9 C8
C10
C6 C11
非数值性计算(举例3)
• 特点:
– 课程之间的先后关系用图结构描述。 – 通过实施创建图结构,按要求将图结构中的 顶点进行线性排序。
• 结论:
– 以上所举例子中的数学模型正是数据结构要 讨论的问题。因此,简单地说,数据结构是 一门讨论描述现实世界实体的数学模型(非数 值计算) 及其上的操作在计算机中如何表示和 实现的学科。
课程名称
程序设计基础 离散数学 数据结构 汇编语言 算法分析与设计 计算机组成原理 编译原理 操作系统 高等数学 线性代数 普通物理 数值分析
需要的先导课程编号
无 C1 C1,C2 C1 C3,C4 C11 C5,C3 C3,C6 无 C9 C9 C9,C10,C1
非数值性计算(举例3)
图1-2 课程先后关系的图形描述形式
– Algorithm + Data Structures = Programs 算法 + 数据结构 = 程序设计
处理问题的策略 问题的数学模型 为计算机处理问题编制一组按照人 的意志执行的指令
数据结构的发展史
• 数据结构作为一门独立的课程在国外是从1968年才开始设 立的。 • 1968年美国唐· 克努特教授开创了数据结构的最初体系, 欧· 他所著的《计算机程序设计技巧》第一卷《基本算法》是 第一本较系统地阐述数据的逻辑结构和存储结构及其操作 的著作。 • 早期:主要用于数值计算。 • 后来:处理逐渐扩大到非数值计算领域(能处理多种复杂 的具有一定结构关系的数据)。
• 应用举例3:制定教学计划
– 在制定教学计划时,需要考虑各门课程的开设顺序。 有些课程需要先导课程,有些课程则不需要,而有些 课程又是其他课程的先导课程。比如,计算机专业课 程的开设情况如下页的表所示。
非数值性计算(举例3)
计算机专业学生的必修课程 课程编号
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12
线性结构 树形结构
图状结构
集合结构
数据的逻辑结构的分类
• 数据的逻辑结构可归结为以下四类:
– 线性结构:结构中的数据元素之间存在一个对 一个的关系。 – 树形结构:结构中的数据元素之间存在一个对 多个的关系。 – 图状结构:结构中的数据元素之间存在多个对 多个的关系。 – 集合结构:结构中的数据元素除了同属于一个 集合的关系外,别无其他关系。
– 编译程序利用堆栈、符号表和语法分析树; – 操作系统由过程并列表和文件支持,并利用由可用空间的并列表 或表格组成的存储管理模式; – 人工智能程序利用堆栈、队列、集、搜索树、表格和图; – 数据库利用串、并列表、树、环和表格。
数值性计算
• 数值性计算:
– 数值计算解决问题的一般步骤:
数学模型→选择计算机语言→编出程序→测试→最ห้องสมุดไป่ตู้解答
• 特点:
– 每个学生的信息占据一行,所有学生的信息按 学号顺序依次排列构成一张表格。 – 表中每个学生的信息依据学号的大小存在着一 种前后关系,这就是我们所说的线性结构。 – 对它的操作通常是插入某个学生的信息,删除 某个学生的信息,更新某个学生的信息,按条 件检索某个学生的信息等等。
非数值性计算(举例2)
– 用高级语言程序设计语言进行编程时,通常可用该语 言提供的数据类型来描述。
• 不同的数据结构其操作集不同,但下列操作必不 可缺:
–结构的生成; –结构的销毁; –在结构中查找满足规定条件的数据元素; –在结构中插入新的数据元素; –删除结构中已经存在的数据元素; –遍历。
数据类型
• 数据类型:
– 是指程序设计语言中各变量可取的数据类型。数据类 型是高级程序设计语言中的一个基本概念,它和数据 结构的概念密切相关。 – 一方面,在程序设计语言中,每一个数据都属于某种 数据类型。类型明显或隐含地规定了数据的取值范围、 存储方式以及允许进行的运算。可以认为,数据类型 是在程序设计中已经实现了的数据结构。 – 另一方面,在程序设计过程中,当需要引入某种新的 数据类型时,总是借助编程语言所提供的数据类型来 描述数据的存储结构。
基本概念和术语(数据)
• 数据(data)
– 数据是对客观事物的符号表示。在计算机科学中,其 含义是指所有能够输入到计算机中并被计算机程序处 理的符号集合。 – 例如,一个个人书库管理程所要处理的数据可能是下 表所示的表格。
基本概念和术语(数据元素)
• 数据元素(data element)
– 数据元素也称为结点,是数据集合中的一个实体,是 数据结构中讨论的基本单位。 – 数据元素按其组成可分为简单型数据元素和复杂型数 据元素。前者由一个数据项组成;后者由多个数据项 组成,它通常携带着一个概念的多方面信息。
• 顺序映像:顺序存储结构 • 非顺序映像:链式存储结构。
数据的存储结构(续)
• 顺序存储结构:
– 特点是借助于数据元素的相对存储位置来表示数据元 素之间的逻辑结构。
x y
• 链式存储结构:
– 特点是借助于指示数据元素地址的指针来表示数据元 素之间的逻辑结构。
y x
数据的存储结构(续)
• 在不同的编程环境中,存储结构可有不同的描述 方法。
• 数据对象:
– 是具有相同特性的数据元素的集合,如:整数、 实数等。它是数据的一个子集。
基本概念和术语(数据结构)
• 数据结构(data structure)
– 数据结构是以数据项为元素的一种结构。 – 数据结构的组成是由各数据项之间的关系和用 来存储、恢复这些数据项的存取函数来确定的。 – 为了叙述上的方便和避免产生混淆,通常把数 据的逻辑结构(logic structure)统称为数据结构, 把数据的物理结构统称为存储结构(storage structure)。
数据结构的形式定义
• 数据结构的形式定义为:
– 数据结构是一个二元组: Data_Structure = (D,S) 其中: D是数据元素的有限集,S是D上关系的有限集。 – 严格地讲,以上定义仅是数据的逻辑结构的定义。 – 例如,在计算机科学中,复数可看成一种数据结构 Complex = (C,R) 其中,C是含两个实数的集合{c1,c2};R = {P},而P 是定义在集合C上的一种关系{<c1,c2>},其中有序偶 <c1,c2>表示c1是复数的实部,c2是复数的虚部。
本课程的内容及学习的基本方法
• 本课程讲述的主要内容:
– 将分别讲述数据结构的基本概念、线性表、栈和队列、 树型结构、图结构、查找、排序等内容。
• 学习本课程的基本方法:
– 上课认真听讲。 – 仔细阅读教材中的大量例题,从而体会并掌握数据结 构中的基本概念。 – 独立认真地完成课堂作业。 – 独立认真地完成上机实践。
数据结构讨论的范畴
• 《数据结构》是计算机相关专业的一门重要的专业基 础课。它主要研究计算机加工对象的逻辑结构、在计 算机中的表示形式以及实现各种基本操作的算法。它 是学习操作系统、编译原理、数据库原理等计算机专 业核心课程的基础,掌握好这门课程的内容,是学习 计算机其他相关课程的必备条件。 • Nikalaus Wirth (Pascal语言之父)
• 应用举例2:输出n个对象的全排列
– 可以使用下面所示的图示描述。
1
12
21
312
132
123
321
231
213
3个对象的全排列过程
非数值性计算(举例2)
• 特点:
– 在求解过程中,所处理的数据之间具有层次关系,这 就是我们所说的树形结构。 – 对它的操作有:建立树形结构,输出最底层结点内容 等等。
数据的存储结构
• 数据的存储结构(storage structure)
– 是指数据结构在计算机中存储器中的具体实现。 – 与孤立的数据元素的表示形式不同,数据结构中的数 据元素不但要表示其本身的实际内容,还要表示清楚 数据元素之间的逻辑关系。 – 数据元素之间的关系在计算机中有两种不同的表示方 法: