1-数据结构的基本概念和术语
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据对象:〈数据对象的定义〉 数据关系:〈数据关系的定义〉 基本操作:〈基本操作的定义〉 } ADT 抽象数据类型名
2014-2-20
其中基本操作的定义格式为: 基本操作名(参数表)
初始条件:〈初始条件描述〉
操作结果:〈操作结果描述〉 赋值参数 只为操作提供输入值。
引用参数 以&打头,除可提供输入值外,还将返回操作
2014-2-20
课堂总结
主要内容:什么是数据结构、数据
结构的基本概念。
重点难点:数据结构的基本概念。
2014-2-20
作业
• 复习,理解相关概念
• 预习, 算法及其分析
2014-2-20
2014-2-20
例如,C 语言中提供的基本数据类型有:
整型 int 浮点型 float 实型( C++语言) 双精度型 double 字符型 char 空类型 void
2014-2-20
6、抽象数据类型(Abstract Data Type 简称ADT)
–指一个数学模型以及定义在该模型上 的一组操作。
例4 煤气管道的铺设问题。如下图:需为城市的各小区之间铺 设煤气管道,对 n 个小区只需铺设 n-1 条管线,由于地理环 境不同等因素使各条管线所需投资不同(如图上所标识),如何 使投资成本最低?
2014-2-20
wenku.baidu.com
• 综合各种程序设计问题,抽取它具体的物理含义,就可 以得到两类数学模型:
–和数值计算相关的数学模型:(非)线性代 数方程,常微分方程--计算数学
( )表示无序数对,用图示法表示时画线段
2014-2-20
3)数据的“逻辑结构”
数据的逻辑结构:描述数据元素之间的逻辑关
系,不依赖于具体表示,是抽象的。可归结为以下 四类:
集合结构 线性结构 树形结构 一对一
一对多
图/网状结构
2014-2-20
多对多
4)数据的存储结构
—— 逻辑结构在存储器中的具体实现表示
(映象)。故又称数据"存储结构"。 它包括数据元素的表示和关系的表示。
“数据元素”的映象 ? “关系”的映象 ?
2014-2-20
① 数据元素的映象方法:
用二进制位(bit)的位串表示数据元素 (321)10 = (501)8 = (101000001)2 A = (101)8 = (001000001)2
–非数值计算问题的数学模型:数学模型的表 示和求解方法--数据结构
• 由以上几个例子可见,描述这类非数值计算问题的数学 模型不再是数学方程,而是诸如表、树、图之类的数据 结构。
2014-2-20
2.什么是数据结构?
• 数据结构是一门研究非数值计算的程序设计问题 中计算机的操作对象以及它们之间的关系和操作 的学科。
• 要使计算机能够更有效地进行这些非数值性处理, 就必须弄清楚这些操作对象的特点,在计算机中 的表示方式以及各个操作的具体实现手段。这些 就是《数据结构》这门课程研究的主要内容。
2014-2-20
1.2 基本概念和术语
1、数据
是所有能被输入到计算机中,且能被计算机处理的所 有符号(数字、字符等)的集合,它是计算机操作对象的 总称,是计算机处理的信息的载体,是信息的某种特定 的符号表示形式。 数据是个集合,如果用集合的表示方法来写的话,就 是: 数据={x|x是计算机操作的对象}
2014-2-20
②关系的映象方法:
•顺序映象 顺序存储结构
借助元素在存储器中相对的位置来表示数据元素之 间的关系。地址是连续的。如数组。 例8 存储复数 z=3.0-2.3i
用顺序结构,内存存储情况为:
2001 2004 2005 2008
2014-2-20
3.0 -2.3
•链式映象
链式存储结构
例如描述一个学生的信息的数据元素可由下列6个数据项组成。
称之为组合项
• 数据项是数据结构中讨论的“最小单位”。
• 数据元素是数据项的集合。
2014-2-20
3、数据对象
• 是性质相同的数据元素的集合,它是数据的一个子集。 如: –整数数据对象 N = { 0, 1, 2, „ } –字母字符数据对象C={ ‘A’,’B’,„„‘Z’} • 在同一个数学模型中的数据元素必然具有相同特性。
2014-2-20
2)数据结构的形式定义
• 数据结构是一个二元组 Data_Structures = ( D,S ) • 其中:D是数据元素的有限集, S是D上关系的有限集。 例7 复数的二元组定义
复数由实部和虚部构成(构成元素),两者之间存在着一种次
序关系(逻辑关系)。 可以表示为: Complex=(C,R) 其中,C={ c1,c2} R={<c1,c2>} 说明:< >表示有序数对,用图示法表示时画箭头
级编程语言中提供的数据类型来描述存储结构。
2014-2-20
5、数据类型
• 数据类型是一个“值”的集合和定义在此集合上 的“一组操作”的总称。 • 在用高级程序语言编写的程序中,必须对程序中 出现的每个变量、常量或表达式,明确说明它们 所属的数据类型。程序中对变量或常量说明其所 属类型的作用是,对它们加上两个约束条件:一 是可取值的范围,二是可进行的操作。 • 不同类型的变量,其所能取的值的范围不同, 所能进行的操作不同。
–由用户定义,用以表示应用问题的数 据模型
–由基本的数据类型组成, 并包括一组 相关的服务(或称操作)
2014-2-20
抽象数据类型的描述方法(P8)
抽象数据类型可用(D,S,P)三元组表示。
其中:D 是数据对象;
S 是 D 上的关系集; P 是对 D 的基本操作集。
格式:ADT 抽象数据类型名 {
例1 **数据库管理系统 数学模型:表格和数据库 例2 计算机对弈: 数学模型: 树形结构
2014-2-20
例3 交叉路口的红绿灯管理。如今十字路口横 竖两个方向都有三个红绿灯,分别控制左拐、 直行和右拐,那么如何控制这些红绿灯既使交 通不堵塞,又使流量最大呢?
数学模型: 图状结构
2014-2-20
4、数据结构
1)概念:是相互之间存在一种或多种特定关系的数据元 素的集合,即带“结构”的数据元素的集合。 “结构”即指数据元素之间存在的约束关系。 数据结构是一堆数据元素和这些数据元素之间的关系 的总和。
2014-2-20
例5 一个12位数的十进制数可以用3个4位的十进
制数表示: 3214,6587,9345--a1(3214),a2(6587),a3(9345)
数 据 结 构
2014-2-20
第一章 绪 论
学习目的:掌握数据结构的基本概
念和术语。
重点难点:数据结构的基本概念。
2014-2-20
教学内容
1.1 什么是数据结构 1.2 基本概念和术语
2014-2-20
1.1 什么是数据结构
• IT 计算机科学家 pascal语言的创始人Niklaus Wirth(尼古拉 斯· 沃斯 )教授在1976年出版了一本书:“Algorithms + Data Structures = Programs”说明了算法和数据结构是进行程序设 计的两大要素。
结果。 初始条件 描述了操作执行之前数据结构和参数应满足 的条件,若不满足,则操作失败,并返回相应出错信息。 操作结果 说明了操作正常完成之后,数据结构的变化
状况和应返回的结果。若初始条件为空,则省略之。
2014-2-20
例9、抽象数据类型"复数"的定义
• ADT Complex { 数据对象:D = {e1,e2 | e1,e2 RealSet } 数据关系:R1 = {<e1,e2> | e1是复数的实部,e2是复数的虚部 } 基本操作: InitComplex( &Z, v1, v2 ) 操作结果:构造复数Z,其实部和虚部分别被赋以参数v1和v2的值。 DestroyComplex( &Z) 初始条件:复数已存在。 假设:z1和z2是上述定义的复数 操作结果:复数Z被销毁。 则 Add(z1, z2, z3) 操作的结果 GetReal( Z, &realPart ) 即为用户要求的结果 初始条件:复数已存在。 z3 = z1 + z2 操作结果:用 realPart 返回复数Z的实部值。 GetImag( Z, &ImagPart ) 初始条件:复数已存在。 操作结果:用 ImagPart 返回复数Z的虚部值。 Add( z1,z2, &sum ) 初始条件:z1,z2 是复数。 操作结果:用sum返回两个复数z1,z2的和值。 } ADT Complex
a1 a3 a5 a2 a4 a6 a1 a2 a3 a4 a5 a6
a1 a 2 a3 a 4 a5 a 6
同样的这6个数据元素组成的一维数组{a1,a2,a3,a4,a5,a6}的 数据元素之间存在如下的次序关系:{<ai,ai+1> | i=1,2,…5} 同样的数据元素,不同的关系构成了不同的结构,因此数据结构 是带结构的数据元素的集合。或者说,数据结构是相互之间存在 着某种逻辑关系的数据元素的集合。
2014-2-20
1.计算机是怎么解决问题的?
抽象 模型
设计 算法
编码
调试 测试
得出 结果
很多数值计算问题的数学模型通常可用一组线性或非线性的代数方程组或 微分方程组来描述: 如:结构静力分析计算---线性代数方程组,全球天气预 报---环流模式方程 2014-2-20
如今计算机所处理的是大量的非数值计算的 程序设计问题:
2、数据元素
是数据(集合)中的一个“个体”,在计算机中通常作 为一个整体进行考虑和处理,是数据结构中讨论的“基本 单位”,但不是“最小单位”。
2014-2-20
数据元素分类
• 一类是不可分割的“原子”型数据元素,如:整数“5”,字符 “N” 等 • 另一类是由多个款项构成的数据元素,其中每个款项被称为一个“数据项”。
a1,a2,a3之间存在“次序”关系<a1,a2>,<a2,a3> ,
<x,y> 意为 x 和 y 之间存在“x领先于y”的次
序关系。
a1a2a3 ≠ a2a1a3
2014-2-20
例6 可以用下述数据结构来描述2行3列的矩阵: 它是一个含6个数据元素{a1,a2,a3,a4,a5,a6} 的集合,且集 合上存在“行关系”和“列关系”两个次序关系,其中: – 行row={<a1,a2>,<a2,a3>,<a4,a5>,<a5,a6>} – 列col={<a1,a4>,<a2,a5>,<a3,a6>}
借助元素存储地址的指针来表示数据元素之 间的关系。地址可以是离散的。 如上复数的存储
2001 2004 2005 2006
3.0 2036
2036 2039
-2.3
2014-2-20
两种存储的比较:
顺序结构:占用最少的存储空间,产生较多碎片。
非顺序:不会出现碎片,每个结点占用较多空间。
当用高级程序设计语言进行编程时,通常可用高
2014-2-20
其中基本操作的定义格式为: 基本操作名(参数表)
初始条件:〈初始条件描述〉
操作结果:〈操作结果描述〉 赋值参数 只为操作提供输入值。
引用参数 以&打头,除可提供输入值外,还将返回操作
2014-2-20
课堂总结
主要内容:什么是数据结构、数据
结构的基本概念。
重点难点:数据结构的基本概念。
2014-2-20
作业
• 复习,理解相关概念
• 预习, 算法及其分析
2014-2-20
2014-2-20
例如,C 语言中提供的基本数据类型有:
整型 int 浮点型 float 实型( C++语言) 双精度型 double 字符型 char 空类型 void
2014-2-20
6、抽象数据类型(Abstract Data Type 简称ADT)
–指一个数学模型以及定义在该模型上 的一组操作。
例4 煤气管道的铺设问题。如下图:需为城市的各小区之间铺 设煤气管道,对 n 个小区只需铺设 n-1 条管线,由于地理环 境不同等因素使各条管线所需投资不同(如图上所标识),如何 使投资成本最低?
2014-2-20
wenku.baidu.com
• 综合各种程序设计问题,抽取它具体的物理含义,就可 以得到两类数学模型:
–和数值计算相关的数学模型:(非)线性代 数方程,常微分方程--计算数学
( )表示无序数对,用图示法表示时画线段
2014-2-20
3)数据的“逻辑结构”
数据的逻辑结构:描述数据元素之间的逻辑关
系,不依赖于具体表示,是抽象的。可归结为以下 四类:
集合结构 线性结构 树形结构 一对一
一对多
图/网状结构
2014-2-20
多对多
4)数据的存储结构
—— 逻辑结构在存储器中的具体实现表示
(映象)。故又称数据"存储结构"。 它包括数据元素的表示和关系的表示。
“数据元素”的映象 ? “关系”的映象 ?
2014-2-20
① 数据元素的映象方法:
用二进制位(bit)的位串表示数据元素 (321)10 = (501)8 = (101000001)2 A = (101)8 = (001000001)2
–非数值计算问题的数学模型:数学模型的表 示和求解方法--数据结构
• 由以上几个例子可见,描述这类非数值计算问题的数学 模型不再是数学方程,而是诸如表、树、图之类的数据 结构。
2014-2-20
2.什么是数据结构?
• 数据结构是一门研究非数值计算的程序设计问题 中计算机的操作对象以及它们之间的关系和操作 的学科。
• 要使计算机能够更有效地进行这些非数值性处理, 就必须弄清楚这些操作对象的特点,在计算机中 的表示方式以及各个操作的具体实现手段。这些 就是《数据结构》这门课程研究的主要内容。
2014-2-20
1.2 基本概念和术语
1、数据
是所有能被输入到计算机中,且能被计算机处理的所 有符号(数字、字符等)的集合,它是计算机操作对象的 总称,是计算机处理的信息的载体,是信息的某种特定 的符号表示形式。 数据是个集合,如果用集合的表示方法来写的话,就 是: 数据={x|x是计算机操作的对象}
2014-2-20
②关系的映象方法:
•顺序映象 顺序存储结构
借助元素在存储器中相对的位置来表示数据元素之 间的关系。地址是连续的。如数组。 例8 存储复数 z=3.0-2.3i
用顺序结构,内存存储情况为:
2001 2004 2005 2008
2014-2-20
3.0 -2.3
•链式映象
链式存储结构
例如描述一个学生的信息的数据元素可由下列6个数据项组成。
称之为组合项
• 数据项是数据结构中讨论的“最小单位”。
• 数据元素是数据项的集合。
2014-2-20
3、数据对象
• 是性质相同的数据元素的集合,它是数据的一个子集。 如: –整数数据对象 N = { 0, 1, 2, „ } –字母字符数据对象C={ ‘A’,’B’,„„‘Z’} • 在同一个数学模型中的数据元素必然具有相同特性。
2014-2-20
2)数据结构的形式定义
• 数据结构是一个二元组 Data_Structures = ( D,S ) • 其中:D是数据元素的有限集, S是D上关系的有限集。 例7 复数的二元组定义
复数由实部和虚部构成(构成元素),两者之间存在着一种次
序关系(逻辑关系)。 可以表示为: Complex=(C,R) 其中,C={ c1,c2} R={<c1,c2>} 说明:< >表示有序数对,用图示法表示时画箭头
级编程语言中提供的数据类型来描述存储结构。
2014-2-20
5、数据类型
• 数据类型是一个“值”的集合和定义在此集合上 的“一组操作”的总称。 • 在用高级程序语言编写的程序中,必须对程序中 出现的每个变量、常量或表达式,明确说明它们 所属的数据类型。程序中对变量或常量说明其所 属类型的作用是,对它们加上两个约束条件:一 是可取值的范围,二是可进行的操作。 • 不同类型的变量,其所能取的值的范围不同, 所能进行的操作不同。
–由用户定义,用以表示应用问题的数 据模型
–由基本的数据类型组成, 并包括一组 相关的服务(或称操作)
2014-2-20
抽象数据类型的描述方法(P8)
抽象数据类型可用(D,S,P)三元组表示。
其中:D 是数据对象;
S 是 D 上的关系集; P 是对 D 的基本操作集。
格式:ADT 抽象数据类型名 {
例1 **数据库管理系统 数学模型:表格和数据库 例2 计算机对弈: 数学模型: 树形结构
2014-2-20
例3 交叉路口的红绿灯管理。如今十字路口横 竖两个方向都有三个红绿灯,分别控制左拐、 直行和右拐,那么如何控制这些红绿灯既使交 通不堵塞,又使流量最大呢?
数学模型: 图状结构
2014-2-20
4、数据结构
1)概念:是相互之间存在一种或多种特定关系的数据元 素的集合,即带“结构”的数据元素的集合。 “结构”即指数据元素之间存在的约束关系。 数据结构是一堆数据元素和这些数据元素之间的关系 的总和。
2014-2-20
例5 一个12位数的十进制数可以用3个4位的十进
制数表示: 3214,6587,9345--a1(3214),a2(6587),a3(9345)
数 据 结 构
2014-2-20
第一章 绪 论
学习目的:掌握数据结构的基本概
念和术语。
重点难点:数据结构的基本概念。
2014-2-20
教学内容
1.1 什么是数据结构 1.2 基本概念和术语
2014-2-20
1.1 什么是数据结构
• IT 计算机科学家 pascal语言的创始人Niklaus Wirth(尼古拉 斯· 沃斯 )教授在1976年出版了一本书:“Algorithms + Data Structures = Programs”说明了算法和数据结构是进行程序设 计的两大要素。
结果。 初始条件 描述了操作执行之前数据结构和参数应满足 的条件,若不满足,则操作失败,并返回相应出错信息。 操作结果 说明了操作正常完成之后,数据结构的变化
状况和应返回的结果。若初始条件为空,则省略之。
2014-2-20
例9、抽象数据类型"复数"的定义
• ADT Complex { 数据对象:D = {e1,e2 | e1,e2 RealSet } 数据关系:R1 = {<e1,e2> | e1是复数的实部,e2是复数的虚部 } 基本操作: InitComplex( &Z, v1, v2 ) 操作结果:构造复数Z,其实部和虚部分别被赋以参数v1和v2的值。 DestroyComplex( &Z) 初始条件:复数已存在。 假设:z1和z2是上述定义的复数 操作结果:复数Z被销毁。 则 Add(z1, z2, z3) 操作的结果 GetReal( Z, &realPart ) 即为用户要求的结果 初始条件:复数已存在。 z3 = z1 + z2 操作结果:用 realPart 返回复数Z的实部值。 GetImag( Z, &ImagPart ) 初始条件:复数已存在。 操作结果:用 ImagPart 返回复数Z的虚部值。 Add( z1,z2, &sum ) 初始条件:z1,z2 是复数。 操作结果:用sum返回两个复数z1,z2的和值。 } ADT Complex
a1 a3 a5 a2 a4 a6 a1 a2 a3 a4 a5 a6
a1 a 2 a3 a 4 a5 a 6
同样的这6个数据元素组成的一维数组{a1,a2,a3,a4,a5,a6}的 数据元素之间存在如下的次序关系:{<ai,ai+1> | i=1,2,…5} 同样的数据元素,不同的关系构成了不同的结构,因此数据结构 是带结构的数据元素的集合。或者说,数据结构是相互之间存在 着某种逻辑关系的数据元素的集合。
2014-2-20
1.计算机是怎么解决问题的?
抽象 模型
设计 算法
编码
调试 测试
得出 结果
很多数值计算问题的数学模型通常可用一组线性或非线性的代数方程组或 微分方程组来描述: 如:结构静力分析计算---线性代数方程组,全球天气预 报---环流模式方程 2014-2-20
如今计算机所处理的是大量的非数值计算的 程序设计问题:
2、数据元素
是数据(集合)中的一个“个体”,在计算机中通常作 为一个整体进行考虑和处理,是数据结构中讨论的“基本 单位”,但不是“最小单位”。
2014-2-20
数据元素分类
• 一类是不可分割的“原子”型数据元素,如:整数“5”,字符 “N” 等 • 另一类是由多个款项构成的数据元素,其中每个款项被称为一个“数据项”。
a1,a2,a3之间存在“次序”关系<a1,a2>,<a2,a3> ,
<x,y> 意为 x 和 y 之间存在“x领先于y”的次
序关系。
a1a2a3 ≠ a2a1a3
2014-2-20
例6 可以用下述数据结构来描述2行3列的矩阵: 它是一个含6个数据元素{a1,a2,a3,a4,a5,a6} 的集合,且集 合上存在“行关系”和“列关系”两个次序关系,其中: – 行row={<a1,a2>,<a2,a3>,<a4,a5>,<a5,a6>} – 列col={<a1,a4>,<a2,a5>,<a3,a6>}
借助元素存储地址的指针来表示数据元素之 间的关系。地址可以是离散的。 如上复数的存储
2001 2004 2005 2006
3.0 2036
2036 2039
-2.3
2014-2-20
两种存储的比较:
顺序结构:占用最少的存储空间,产生较多碎片。
非顺序:不会出现碎片,每个结点占用较多空间。
当用高级程序设计语言进行编程时,通常可用高