数据结构课件C++版第一章
合集下载
数据结构(C语言版)第1章 绪论
数据结构(Data Structures) 数据结构
(C语言版 语言版) 语言版
主讲教师: 吴让仲 主讲教师:
Instructor: WU, RANGZHONG E-mail: wurangzhong@
1/68
教材 (Text Book) 数据结构(C语言版 数据结构 语言版) 语言版
17/68
逻辑结构的分类
数据的逻辑结构是本质,可以分为: 数据的逻辑结构是本质,可以分为: 线性结构和 线性结构和非线性结构 也可以分为 集合 结构中的数据元素除了同属于一种类型外,别无 结构中的数据元素除了同属于一种类型外, 其它关系. 其它关系. 线性结构 结构中的数据元素之间存在一对一的关系. 结构中的数据元素之间存在一对一的关系. 树型结构 结构中的数据元素之间存在一对多的关系. 结构中的数据元素之间存在一对多的关系. 图状结构或网状结构 结构中的数据元素之间存在多对 多的关系. 多的关系.
数据结构发展简史
作为独立课程国外1968年开始设立. 作为独立课程国外1968年开始设立. 1968年开始设立 1968年美国KNUTH教授开创了数据结构的最初 1968年美国KNUTH教授开创了数据结构的最初 年美国KNUTH 体系. 体系. 计算机专业的专业基础课. 计算机专业的专业基础课. 非计算机专业的主要选修课. 非计算机专业的主要选修课.
25/68
数据结构课程的内容
数据结构是介于数学,计算机硬件和计算机软 数据结构是介于数学,计算机硬件和 数学 件之间的一门计算机科学与技术专业的核心课 是编译原理,操作系统,数据库, 程,是编译原理,操作系统,数据库,人工智 能等课程的基础.同时,数据结构技术也广泛 能等课程的基础.同时, 应用于信息科学,系统工程, 应用于信息科学,系统工程,应用数学以及各 信息科学 种工程技术领域. 种工程技术领域. 数据结构课程的先修课程有高级语言程序设计 和离散数学. 和离散数学
(C语言版 语言版) 语言版
主讲教师: 吴让仲 主讲教师:
Instructor: WU, RANGZHONG E-mail: wurangzhong@
1/68
教材 (Text Book) 数据结构(C语言版 数据结构 语言版) 语言版
17/68
逻辑结构的分类
数据的逻辑结构是本质,可以分为: 数据的逻辑结构是本质,可以分为: 线性结构和 线性结构和非线性结构 也可以分为 集合 结构中的数据元素除了同属于一种类型外,别无 结构中的数据元素除了同属于一种类型外, 其它关系. 其它关系. 线性结构 结构中的数据元素之间存在一对一的关系. 结构中的数据元素之间存在一对一的关系. 树型结构 结构中的数据元素之间存在一对多的关系. 结构中的数据元素之间存在一对多的关系. 图状结构或网状结构 结构中的数据元素之间存在多对 多的关系. 多的关系.
数据结构发展简史
作为独立课程国外1968年开始设立. 作为独立课程国外1968年开始设立. 1968年开始设立 1968年美国KNUTH教授开创了数据结构的最初 1968年美国KNUTH教授开创了数据结构的最初 年美国KNUTH 体系. 体系. 计算机专业的专业基础课. 计算机专业的专业基础课. 非计算机专业的主要选修课. 非计算机专业的主要选修课.
25/68
数据结构课程的内容
数据结构是介于数学,计算机硬件和计算机软 数据结构是介于数学,计算机硬件和 数学 件之间的一门计算机科学与技术专业的核心课 是编译原理,操作系统,数据库, 程,是编译原理,操作系统,数据库,人工智 能等课程的基础.同时,数据结构技术也广泛 能等课程的基础.同时, 应用于信息科学,系统工程, 应用于信息科学,系统工程,应用数学以及各 信息科学 种工程技术领域. 种工程技术领域. 数据结构课程的先修课程有高级语言程序设计 和离散数学. 和离散数学
数据结构(c语言版)课件(西安交大)第一章
数据结ห้องสมุดไป่ตู้依据视点的不同,分为数据逻辑结构和物理结 构:
逻辑结构:从解决问题的需要出发,为实现
必要的功能所建立的数据结构,它属于用户 的视图,是面向对象的。 物理结构:指数据该如何在计算机中存放, 是数据逻辑结构的物理存储方式,是属于具 体实现的视图,是面向计算机的。 关系:物理结构是逻辑数据的存储映象
for (i=1;i<=n;i++)
for (j=1;j<=n;j++) y++; 一般情况下,对步进循环语句只需考虑循环体 中语句的执行次数,而忽略循环体中步长加1 、终值判断、控制转移等成分。 //n*n
例:
x=1;
for (i=1;i<=n;i++)
for (j=1;j<=i;j++) for (k=1;k<=j;k++)
4、有一个或多个输出
5、有效性:算法中的每一个步骤都应当能被有效的执行 ,并得到确定的结果。例如:被零除的计算动作是不能 被有效执行的。
算法设计 自顶向下,逐步求精
设计算法的基本方法:把一个具体问题转变成一个算 法 事例学习:选择排序问题 明确问题:非递减排序 解决方案:逐个选择最小数据 算法框架: for ( int i=0; i<n-2; i++ ) { //n-1趟 从a[i]检查到a[n-1]; 若最小的整数在a[k], 交换a[i]与a[k]; } 细化程序:程序 SelectSort
线性结构中各数据成员之间的线性关系:有直接前驱和 直接后继(除最前、最后一个元素)
例:电话号码查询问题
方法1:顺序存储,顺序查找
精品课件-数据结构-C语言描述-第1章
以后的讨论中,在不会引起混淆的场合,我们混合使用 结点和元素这两个术语。但必要时,将包括位置信息在内的 存储块整体称为结点,而将其中的元素信息部分称为该结点 的元素。
除顺序和链接表示外,还可以有其他存储数据的方法, 如索引(index)方法和散列(hash)方法。关于这两种方法,请 参看以后相关章节。这些基本的存储表示方法以及它们的组 合,可衍生出各种数据的存储结构。
第1章 概 论
1.1.3 数据的存储结构 数据的逻辑结构是面向应用问题的,是从用户角度看到的
数据结构。数据必须在计算机内存储,数据的存储结构是数据 在计算机内的组织方式,是逻辑数据的存储映像,它是面向计 算机的。
我们知道,计算机内存是由有限个存储单元组成的一个连 续存储空间,这些存储单元或者是字节编址的,或者是字编址 的。从存储器角度看,内存中是一堆二进制数据,它们可以被 机器指令解释为指令、整数、字符、布尔数等,也可以被数据 结构的算法解释为具有某种结构的数据。
第1章 概 论
1.2.2 封装与信息隐蔽 封装(encapsulation)是指把数据和操纵数据的运算组合
在一起的机制。使用者只能通过一组允许的运算访问其中的数 据。原则上,数据的使用者只需知道这些运算的定义(也称规 范)便可访问数据,而无需了解数据是如何组织、存储的,以 及运算算法如何。也就是说,封装对使用者隐藏了数据结构以 及程序的实现细节。这种设计数据结构或程序的策略称为信息 隐蔽(information hiding)。
第1章 概 论 第1章 概 论
1.1 什么是数据结构 1.2 数据抽象和抽象数据类型 1.3 描述数据结构 1.4 算法和算法分析 习题1
第1章 概 论
1.1 什么是数据结构
数据结构是计算机科学与技术领域广泛使用的术语, 然而,究竟什么是数据结构,在计算机科学界至今没有标准的 定义。
除顺序和链接表示外,还可以有其他存储数据的方法, 如索引(index)方法和散列(hash)方法。关于这两种方法,请 参看以后相关章节。这些基本的存储表示方法以及它们的组 合,可衍生出各种数据的存储结构。
第1章 概 论
1.1.3 数据的存储结构 数据的逻辑结构是面向应用问题的,是从用户角度看到的
数据结构。数据必须在计算机内存储,数据的存储结构是数据 在计算机内的组织方式,是逻辑数据的存储映像,它是面向计 算机的。
我们知道,计算机内存是由有限个存储单元组成的一个连 续存储空间,这些存储单元或者是字节编址的,或者是字编址 的。从存储器角度看,内存中是一堆二进制数据,它们可以被 机器指令解释为指令、整数、字符、布尔数等,也可以被数据 结构的算法解释为具有某种结构的数据。
第1章 概 论
1.2.2 封装与信息隐蔽 封装(encapsulation)是指把数据和操纵数据的运算组合
在一起的机制。使用者只能通过一组允许的运算访问其中的数 据。原则上,数据的使用者只需知道这些运算的定义(也称规 范)便可访问数据,而无需了解数据是如何组织、存储的,以 及运算算法如何。也就是说,封装对使用者隐藏了数据结构以 及程序的实现细节。这种设计数据结构或程序的策略称为信息 隐蔽(information hiding)。
第1章 概 论 第1章 概 论
1.1 什么是数据结构 1.2 数据抽象和抽象数据类型 1.3 描述数据结构 1.4 算法和算法分析 习题1
第1章 概 论
1.1 什么是数据结构
数据结构是计算机科学与技术领域广泛使用的术语, 然而,究竟什么是数据结构,在计算机科学界至今没有标准的 定义。
数据结构(C语言版) 第1章 绪论
数据结构
理论课教材: 数据结构(C语言版) 严蔚敏 吴伟民 编著
第一章 绪论
1.0 1.1 1.2 1.3 1.4 学习数据结构的主要意义和要求 数据结构讨论的范畴 基本概念 抽象数据类型的表示和实现 算法和算法的度量
学习数据结构的主要意义和要求
意义:
数据结构和算法是计算机学科的两大支柱 数据结构是程序设计的基础 程序=算法+数据结构
存储结构分为: 顺序存储结构——借助元素在存储器中的相对位置来表示 数据元素间的逻辑关系 链式存储结构——借助指示元素存储地址的指针表示数据 元素间的逻辑关系 数据的逻辑结构与存储结构密切相关 逻辑结构
线性表
物理结构
顺序存储结构
树
图
链式存储结构
复合存储结构
h
h
元素1 1400
1345 元素2
链式存储
数据结构的形式定义为: 数据结构是一个二元组 Data_Structures = (D, S) 其中: D 是数据元素的有限集, S 是 D上关系的有限集。
数据元素的映象方法: 例用二进制位(bit)的位串表示数据元素
(321)10 = (501)8 = (101000001)2 A = (101)8 = (001000001)2
算法设计的要求
2. 可读性 算法主要是为了人的阅读与交流,其次才是为计算机执行,因此算法 应该易于人的理解;另一方面,晦涩难读的程序易于隐藏较多错误而难以 调试。 3.健壮性 当输入的数据非法时,算法应当恰当地作出反映或进行相应处理,而
1536
元素3
1346
元素4
∧
存储地址 1345 1346
存储内容 元素1 元素4
指针 1400 ∧
理论课教材: 数据结构(C语言版) 严蔚敏 吴伟民 编著
第一章 绪论
1.0 1.1 1.2 1.3 1.4 学习数据结构的主要意义和要求 数据结构讨论的范畴 基本概念 抽象数据类型的表示和实现 算法和算法的度量
学习数据结构的主要意义和要求
意义:
数据结构和算法是计算机学科的两大支柱 数据结构是程序设计的基础 程序=算法+数据结构
存储结构分为: 顺序存储结构——借助元素在存储器中的相对位置来表示 数据元素间的逻辑关系 链式存储结构——借助指示元素存储地址的指针表示数据 元素间的逻辑关系 数据的逻辑结构与存储结构密切相关 逻辑结构
线性表
物理结构
顺序存储结构
树
图
链式存储结构
复合存储结构
h
h
元素1 1400
1345 元素2
链式存储
数据结构的形式定义为: 数据结构是一个二元组 Data_Structures = (D, S) 其中: D 是数据元素的有限集, S 是 D上关系的有限集。
数据元素的映象方法: 例用二进制位(bit)的位串表示数据元素
(321)10 = (501)8 = (101000001)2 A = (101)8 = (001000001)2
算法设计的要求
2. 可读性 算法主要是为了人的阅读与交流,其次才是为计算机执行,因此算法 应该易于人的理解;另一方面,晦涩难读的程序易于隐藏较多错误而难以 调试。 3.健壮性 当输入的数据非法时,算法应当恰当地作出反映或进行相应处理,而
1536
元素3
1346
元素4
∧
存储地址 1345 1346
存储内容 元素1 元素4
指针 1400 ∧
数据结构第一章ppt课件
一组操作 – ADT = ( D,S,P )
其中:D 是数据对象, S 是 D 上的关系集, P 是 D 的基本操作集
算法
• 算法 算法是对问题求解过程的一种描述,是 为解决一个或一类问题给出的一个确定 的、有限长的操作序列。重要特性:
– 有穷性 对于任意一组合法的输入值,在执行有穷步 骤之后一定能结束。
– 赋值方式不同
• 对字符指针变量,可用赋值语句赋值 • 字符数组,可在定义时初始化,不能整体赋值
– 指针变量的值是可以改变的
• 数组名代表数组的起始地址,是一个常量,而常 量是不能被改变的
结构体
• 结构体类型与结构体变量的定义 • 结构体变量的引用与初始化 • 结构体指针 • 结构体数组
结构体
– 形式参数和实际参数 – 值传递
函数
• 递归调用
– 一个函数在它的函数体内,直接或间接地调用它自 身
– 例如求N!(n>=0)
long power(int n) { long f; if(n>1) f=power(n-1)*n; else f=1; return (f); }
函数
• 数组作为函数参数
• 数组的定义 • 数组元素的引用 • 数组的元素的初始化 • 应用举例
数组
• 数组的定义 – 数据类型 数组名[常量表达式] – int a[10];
– 下标从0开始 – 数组名代表整个数组的首地址
数组
• 一维数组元素的引用
– 数组名[下标表达式]
• 一维数组的元素的初始化
– 数据类型 数组名[常量表达式]={初值表}
– 使用指向数组的指针变量来引用数组元素
main()
{ int array[10], *pointer=array, i;
其中:D 是数据对象, S 是 D 上的关系集, P 是 D 的基本操作集
算法
• 算法 算法是对问题求解过程的一种描述,是 为解决一个或一类问题给出的一个确定 的、有限长的操作序列。重要特性:
– 有穷性 对于任意一组合法的输入值,在执行有穷步 骤之后一定能结束。
– 赋值方式不同
• 对字符指针变量,可用赋值语句赋值 • 字符数组,可在定义时初始化,不能整体赋值
– 指针变量的值是可以改变的
• 数组名代表数组的起始地址,是一个常量,而常 量是不能被改变的
结构体
• 结构体类型与结构体变量的定义 • 结构体变量的引用与初始化 • 结构体指针 • 结构体数组
结构体
– 形式参数和实际参数 – 值传递
函数
• 递归调用
– 一个函数在它的函数体内,直接或间接地调用它自 身
– 例如求N!(n>=0)
long power(int n) { long f; if(n>1) f=power(n-1)*n; else f=1; return (f); }
函数
• 数组作为函数参数
• 数组的定义 • 数组元素的引用 • 数组的元素的初始化 • 应用举例
数组
• 数组的定义 – 数据类型 数组名[常量表达式] – int a[10];
– 下标从0开始 – 数组名代表整个数组的首地址
数组
• 一维数组元素的引用
– 数组名[下标表达式]
• 一维数组的元素的初始化
– 数据类型 数组名[常量表达式]={初值表}
– 使用指向数组的指针变量来引用数组元素
main()
{ int array[10], *pointer=array, i;
数据结构(C语言版)——第1章绪论
正确性 可读性 健壮性 高时间效率 高空间效率
算法分析
• • 算法执行所耗费的时间,与该算法中所 有语句的执行总次数成正比 。 语句频度:算法中的所有语句的执行的 总次数 ,记为:T(n) 。 时间复杂度:把T(n)表示成同数量级函 数的形式:T(n)=O(g(n)),则O(g(n))称 为算法的时间复杂度 。描述了当n充分 大的时候算法的语句频度的数量级。
数据结构(C语言版)
第1章 绪论
本章主要知识点
• 数据结构的常用术语及基本概念
• 集合、线性结构、树型结构、图型结构 的逻辑特点 • 抽象数据类型 • 算法、算法描述及算法分析
常用术语和基本概念
• 数据:人们利用文字符号、数字符号以及其他规 定的符号对客观现实世界的事物及其活动所做的 抽象描述。 • 数据元素:表示一个事物的一组数据 ,是数据的 基本单位 。 • 数据项:数据的最小单位。 • 数据对象:性质相同的数据元素的集合。 • 数据类型:一组性质相同的值的集合以及定义在 这个集合上的一组操作的总称。
•
• 常见的时间复杂度有O(1), O(log n) , O(n),O(n2),O(n3), O(2n),分别称为常量 阶、对数阶、线性阶、平方阶、立方阶 和指数阶。 • O(1)<O(log n)<O(n)<O(n2)<O(n3)<O(2n)
• •
空间复杂度:在算法执行过程中需要
的辅助空间数量,记为:S(n) = O(f(n)) 。
常用术语和基本概念
• 数据基本结构: • 集合结构:数据元素之间无任何关系。 • 线性结构:元素之间存在一对一的线线 关系。 • 树形结构:数据元素之间存在着一对多 的关系。 • 图形结构:数据元素之间存在多对多的 关系。
数据结构(C语言版)课件
算法 = 控制结构 + 基本操作 算法的执行时间 =
∑基本操作(i)的执行次数×基本操作(i)的执行时间
算法的执行时间 与 基本操作执行次数之和 成正比
从算法中选取一种对于所研究的问题来说是 基本操作 的 原操作,以该基本操作 在算法中重复执行的次数 作为算法
运行时间的衡量准则。
时间复杂度的渐进表示法
假设一个学生档案管理系统应包含如下表所示的 学生信息
学 号 99070101 99070102 99070103 99070104
......
姓 名 李 军 王颜霞 孙 涛 单晓宏
......
学生基本情况 性 别 出生年月 男 80.12 女 81.2 男 80.9 男 81.3
...... ......
...... ...... ....... ...... ...... ......
特点:
l 每个学生的信息占据一行,所有学生 的信息按学号顺序依次排列构成一张表格; l 表中每个学生的信息依据学号的大小 存在着一种前后关系,这就是我们所说的线性 结构; l 对它的操作通常是插入某个学生的信 息,删除某个学生的信息,更新某个学生的信 息,按条件检索某个学生的信息等等。
// -----基本操作的实现
void add( complex z1, complex z2, complex &sum ) { // 以 sum 返回两个复数 z1, z2 的和 sum.realpart = z1.realpart + z2.realpart; sum.imagpart = z1.imagpart + z2.imagpart; }
D={e1,e2|e1,e2∈RealSet }
数据关系: R1={<e1,e2> | e1是复数的实数部分 | e2 是复数的虚数部分 }
∑基本操作(i)的执行次数×基本操作(i)的执行时间
算法的执行时间 与 基本操作执行次数之和 成正比
从算法中选取一种对于所研究的问题来说是 基本操作 的 原操作,以该基本操作 在算法中重复执行的次数 作为算法
运行时间的衡量准则。
时间复杂度的渐进表示法
假设一个学生档案管理系统应包含如下表所示的 学生信息
学 号 99070101 99070102 99070103 99070104
......
姓 名 李 军 王颜霞 孙 涛 单晓宏
......
学生基本情况 性 别 出生年月 男 80.12 女 81.2 男 80.9 男 81.3
...... ......
...... ...... ....... ...... ...... ......
特点:
l 每个学生的信息占据一行,所有学生 的信息按学号顺序依次排列构成一张表格; l 表中每个学生的信息依据学号的大小 存在着一种前后关系,这就是我们所说的线性 结构; l 对它的操作通常是插入某个学生的信 息,删除某个学生的信息,更新某个学生的信 息,按条件检索某个学生的信息等等。
// -----基本操作的实现
void add( complex z1, complex z2, complex &sum ) { // 以 sum 返回两个复数 z1, z2 的和 sum.realpart = z1.realpart + z2.realpart; sum.imagpart = z1.imagpart + z2.imagpart; }
D={e1,e2|e1,e2∈RealSet }
数据关系: R1={<e1,e2> | e1是复数的实数部分 | e2 是复数的虚数部分 }
《数据结构实用教程(C语言版)》第1章概论.
1.2.1 算法的概念
(3)可行性:算法中描述的操作都可以通过 执行有限次基本操作来实现。 (4)输入:一个算法有零个或多个输入。 (5)输出:一个算法必有一个或多个输出。 3.算法的评价 要设计一个好的算法通常需要考虑以下几方面 的要求: (1)正确性:要求算法能够正确地执行预先 规定的功能,并达到所期望的性能要求。 (2)可读性:为了便于理解、测试和修改算 法,算法应该具有良好的可读性。 返回到本节目录
返回到本节目录
1.1.3 数据的存储结构
顺序存储结构的主要特点: 可实现对各数据元素的随机访问。这是因为 只要知道存储的首地址以及每个数据元素所 占的存储单元,就可以计算出各数据元素的 存储地址。 不利于修改,在对数据元素进行插入、删除 运算时可能要移动一系列的数据元素。
返回到本节目录
1.1.3 数据的存储结构
返回到本节目录
1.2.1 算法的概念
4.算法的描述 为了表示一个算法,可以用多种不同的方法, 常用的有自然语言、传统流程图、结构化流 程图、N-S流程图等表示。本书采用C的描 述语言实现对各种数据结构及算法的操作描 述,算法是以函数形式描述,描述如下:
类型标识符 函数名(形式参数表) /*算法说明*/ { 语句序列 }
返回到本节目录
1.1.2 数据的逻辑结构
(【例1.3】制定教学计划 在制定教学计划时,需要考虑各门课程的开设 顺序。有些课程需要先导先修课程,有些课 程则不需要,而有些课程又是其他课程的先 导先修课程。比如,计算机专业课程的开设 情况如表1-2所示。
返回到本节目录
1.1.2 数据的逻辑结构
教学计划的关系图如图1-3所示。
返回到本节目录
1.1.2 数据的逻辑结构
基于C语言数据结构的教学课件-第1章绪论
树的定义和基本操作
树的基本操作包括 初始化一棵树 判断一棵树是否为空
树的定义和基本操作
获取树的深度
获取树的节点数
获取树的根节点
01
03 02
二叉树的定义和基本操作
• 二叉树(Binary Tree)是n(n>=0)个结点的有限集,它 或者是空集(n=0),或者由一个根结点和两棵互不相交的、 分别称为左子树和右子树的二叉树组成。
决策树
在机器学习和数据挖掘中,决策树是一种常用的分类和 预测模型,它的结构类似于二叉树。
06
图和网
图的定义和基本操作
图的定义
由顶点集V和边集E组成,记作G=(V,E)。
顶点和边的关系
顶点表示对象,边表示对象间的关系。
图的分类
无向图、有向图、简单图、多重图等。
基本操作
创建图、添加顶点、添加边、删除顶点、删除边等。
05
树和二叉树
树的定义和基本操作
树(Tree)是n(n>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中
有且仅有一个特定的称为根(Root)的结点。 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、...、Tm,其中每
一个集合本身又是一棵树,并且称为根的子树(SubTree)。
线性表的抽象数据类型定义
03
通过数据类型和数据结构定义线性表,并给出相应的操作函数。
线性表的顺序存储结构
顺序存储结构的定义
用一段地址连续的存储单元依次存储线性表的数据元 素。
顺序存储结构的优点
可以随机存取表中任一元素,且逻辑上相邻的元素物 理上也相邻。
顺序存储结构的缺点
插入和删除操作需要移动大量元素,且预先分配存储 空间可能造成空间浪费。
数据结构(C)PPT1
帮助编写对应的程序 帮助区分一系列可以解决的小问题和难以解决的问题 决策制定成为更加理性的过程 使得过程一致和可靠
2020/10/8
数据结构的作用 可使用不同的算法来解决相同的问题。 一些算法可能比其它算法更有效地解决问题。 应使用提供最大效率的算法来解决问题。 改善算法效率的其中一个基本技巧是使用适当的数据结构。 数据结构被定义为在内存中互相组织各个数据元素的方式。
2020/10/8
确定算法的效率
影响程序效率的因素包括:
机器速度 编译器 操作系统 编程语言 输入大小
除了这些因素,程序的方式数据被组织且用于解决此问题的 算法还对程序的效率具有重大影响。
2020/10/8
确定算法的效率(续) 通过确定消耗的资源量,可以计算算法的效率。 算法消耗的主要资源是:
时间: 执行算法所需的CPU时间。 空间: 执行算法时所用的内存量。
静态,动态
2020/10/8
明确设计算法的技巧 设计算法时两个常用的技巧是:
分治法 贪婪法
2020/10/8
明确设计算法的技巧(续) 分治法是解决概念性困难问题的强大方法。 分治法需要你找出一个方法:
将问题细分为子问题 解决微不足道的用例 组合到子问题的解决方案以解决原始问题
2020/10/8
明确设计算法的技巧(续)
2020/10/8
数据结构的作用(续)
数据可以按许多不同的方式来组织。因此,您可以创建尽可 能多的数据结构。 经过多年已经证明很有用的一些数据结构是:
数组 链接表 堆栈 队列 树 图表
2020/10/8
数据结构的作用(续) 合适数据结构的使用有助于提高程序的效率。 使用合适的数据结构还允许您克服一些其它编程挑战,如:
2020/10/8
数据结构的作用 可使用不同的算法来解决相同的问题。 一些算法可能比其它算法更有效地解决问题。 应使用提供最大效率的算法来解决问题。 改善算法效率的其中一个基本技巧是使用适当的数据结构。 数据结构被定义为在内存中互相组织各个数据元素的方式。
2020/10/8
确定算法的效率
影响程序效率的因素包括:
机器速度 编译器 操作系统 编程语言 输入大小
除了这些因素,程序的方式数据被组织且用于解决此问题的 算法还对程序的效率具有重大影响。
2020/10/8
确定算法的效率(续) 通过确定消耗的资源量,可以计算算法的效率。 算法消耗的主要资源是:
时间: 执行算法所需的CPU时间。 空间: 执行算法时所用的内存量。
静态,动态
2020/10/8
明确设计算法的技巧 设计算法时两个常用的技巧是:
分治法 贪婪法
2020/10/8
明确设计算法的技巧(续) 分治法是解决概念性困难问题的强大方法。 分治法需要你找出一个方法:
将问题细分为子问题 解决微不足道的用例 组合到子问题的解决方案以解决原始问题
2020/10/8
明确设计算法的技巧(续)
2020/10/8
数据结构的作用(续)
数据可以按许多不同的方式来组织。因此,您可以创建尽可 能多的数据结构。 经过多年已经证明很有用的一些数据结构是:
数组 链接表 堆栈 队列 树 图表
2020/10/8
数据结构的作用(续) 合适数据结构的使用有助于提高程序的效率。 使用合适的数据结构还允许您克服一些其它编程挑战,如:
数据结构实用教程(C语言版)
规定的功能,并达到所期望的性能要求。 (2)可读性:为了便于理解、测试和修改算
法,算法应该具有良好的可读性。 返回到本节目录
1.2.1 算法的概念
(3)健壮性:当输入非法的数据时,算法应 能恰当地做出反应或进行相应处理,而不是 产生莫名奇妙的输出结果。并且处理出错的 方法不应是中断程序的执行,而是返回一个 表示错误或错误性质的值,以便在更高的抽 象层次上进行处理。
x=0;y=0;
for(k=1;k<=n;k++)
x++;
进行存储,假定每个元素占用50个存储单元, 数据从1000号单元开始由低地址向高地址 存放,对应的顺序存储结构如表1-3所示。
返回到本节目录
1.1.3 数据的存储结构
顺序存储结构的主要特点: ❖ 可实现对各数据元素的随机访问。这是因为
只要知道存储的首地址以及每个数据元素所 占的存储单元,就可以计算出各数据元素的 存储地址。 ❖ 不利于修改,在对数据元素进行插入、删除 运算时可能要移动一系列的数据元素。
返回到总目录
1.2.1 算法的概念
1.算法的定义
瑞士著名的计算机科学家N.Wirth所提出的著 名公式“程序=算法+数据结构”,所谓算 法,就是为解决特定问题而采取的步骤和方 法。
2.算法的特性
一个算法应该具有下列特性:
(1)有穷性:一个算法必须(对任何合法的 输入值)在执行有限步之后结束。
(2)确定性:算法中的每一条指令必须有确
的关系外,别无其他关系,这是一种最简单 的数据结构。 (2)线性结构 结构中的数据元素之间存在着“一对一”的关 系。 【例1.1】学籍档案管理 假设一个学籍档案管理系统应包含如表1-1所 示的学生信息。
法,算法应该具有良好的可读性。 返回到本节目录
1.2.1 算法的概念
(3)健壮性:当输入非法的数据时,算法应 能恰当地做出反应或进行相应处理,而不是 产生莫名奇妙的输出结果。并且处理出错的 方法不应是中断程序的执行,而是返回一个 表示错误或错误性质的值,以便在更高的抽 象层次上进行处理。
x=0;y=0;
for(k=1;k<=n;k++)
x++;
进行存储,假定每个元素占用50个存储单元, 数据从1000号单元开始由低地址向高地址 存放,对应的顺序存储结构如表1-3所示。
返回到本节目录
1.1.3 数据的存储结构
顺序存储结构的主要特点: ❖ 可实现对各数据元素的随机访问。这是因为
只要知道存储的首地址以及每个数据元素所 占的存储单元,就可以计算出各数据元素的 存储地址。 ❖ 不利于修改,在对数据元素进行插入、删除 运算时可能要移动一系列的数据元素。
返回到总目录
1.2.1 算法的概念
1.算法的定义
瑞士著名的计算机科学家N.Wirth所提出的著 名公式“程序=算法+数据结构”,所谓算 法,就是为解决特定问题而采取的步骤和方 法。
2.算法的特性
一个算法应该具有下列特性:
(1)有穷性:一个算法必须(对任何合法的 输入值)在执行有限步之后结束。
(2)确定性:算法中的每一条指令必须有确
的关系外,别无其他关系,这是一种最简单 的数据结构。 (2)线性结构 结构中的数据元素之间存在着“一对一”的关 系。 【例1.1】学籍档案管理 假设一个学籍档案管理系统应包含如表1-1所 示的学生信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章 数据结构概论
数据结构的概念 抽象数据类型概念 算法定义 算法性能分析与度量
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念
什么是数据结构 基本概念和术语 数据结构涵盖的内容
13.12.2020
Data Structure—Ch1 Introduction
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
例:用图形表示下列数据结构,并指出它们是属于 线性结构还是非线性结构。
1) S=(D, R) D={ a, b, c, d, e, f } R={(a,e), (b,c), (c,a), (e,f), (f,d)}
数据项(data item):构成数据元素的项目。是具 有独立含义的最小标识单位(又称字段、域、属 性等)。
三者之间的关系:数据>数据元素>数据项 例:班级通讯录 > 个人记录 > 姓名、年龄……
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
解:上述表达式可用图形表示为:
b
c
a
ef
d
此结构为线性的。
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
2) S=(D, R) D={di | 1≤i≤5} R={(di , dj ), i<j}
解:上述表达式可用图形表示为:
d1
数据结构(data structure):由某一数据元素的集 合以及该集合中所有数据元素之间的关系组成。 记为:
Data_Structure = {D, R} 其中,D 是某一数据元素的集合,R 是该集合中 所有数据元素之间的关系的有限集合。
13.12.2020
Data Structห้องสมุดไป่ตู้re—Ch1 Introduction
主要用于外存的存储表示
▪ 索引存储表示
▪ 散列存储表示
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
顺序存储是把逻辑上相邻的结点存储在物理上相 邻的存储单元里,结点之间的关系由存储单元的 邻接关系来体现。优点:占用最小的存储空间。 缺点:在做插入、删除等操作时需要移动大量的 数据。
d5
d2
该结构是非线性的。
d4
d3
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
数据的存储结构
数据的存储结构(物理结构)是数据的逻辑结构 在计算机存储器中的实现。
数据的存储结构分类:
主要用于内存的存储表示
▪ 顺序存储表示
▪ 链接存储表示
h
数据结构的概念--基本概念和术语
数据的逻辑结构分类:
集合:结构中的数据元素除了同属于一种类 型外,别无其它关系。
线性结构:结构中的数据元素之间存在一对 一的关系。
树型结构:结构中的数据元素之间存在一对 多的关系。
图状结构或网状结构:结构中的数据元素之 间存在多对多的关系。
13.12.2020
h
数据结构的概念 --什么是数据结构
数据结构是一门研究非数值计算的程序设计问题 中计算机的操作对象以及它们之间的关系和操作 等等的学科。
地位: 计算机科学中的一门综合性的专业基础课; 介于数学、计算机硬件和计算机软件之间的核心课程。
学习方法: 以学习思想为主,以高级程序设计语言的表达为途径。
链式存储借助指示元素存储地址的指针表示数据 元素间的逻辑关系。优点:易于插入、删除等操 作。缺点:占用较多的存储空间(指针域)。
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
索引存储用结点的索引号来确定结点的存储地址。 优点:索引检索速度快。缺点:增加额外的索引 表,占用较多的存储空间,在插入、删除时还要 修改索引表,花费较多时间。
散列结构是根据结点的关键码通过一个函数计算 直接得到该结点的存储地址。
综上,数据的逻辑结构根据问题所要实现的功 能建立,数据的物理结构根据问题所要求的响应 速度、处理时间、修改时间、存储空间和单位时 间的处理量等建立,是逻辑结构的存储映像。
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
数据的逻辑结构 数据的逻辑结构从逻辑关系上描述数据,与数据 的存储无关; 数据的逻辑结构可以看作是从具体问题抽象出来 的数据模型; 数据的逻辑结构与数据元素本身的形式、内容无 关; 数据的逻辑结构与数据元素的相对存储位置无关。
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
数据的运算 在数据的逻辑结构上定义的操作算法,在数据的 存储结构上实现。 最常用的数据运算有5种:插入、删除、修改、 查找、排序。
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念
先建立数据结构模型再上机实践灵活解决实际问题。
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
数据(data):所有能被计算机识别、存储和处理 的符号的集合(包括数字、字符、声音、图像等 信息)。
数据元素(data element):是数据的基本单位,具 有完整确定的实际意义(又称元素、结点,顶点、 记录等)。
h
数据结构的概念--基本概念和术语
数据结构是数据的组织形式,包括三个方面: 数据元素间的逻辑关系,即数据的逻辑结构; 数据元素及其关系在计算机存储内的表示,即 数据的存储表示; 数据的运算,即对数据元素施加的操作。
13.12.2020
Data Structure—Ch1 Introduction
数据结构的概念 抽象数据类型概念 算法定义 算法性能分析与度量
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念
什么是数据结构 基本概念和术语 数据结构涵盖的内容
13.12.2020
Data Structure—Ch1 Introduction
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
例:用图形表示下列数据结构,并指出它们是属于 线性结构还是非线性结构。
1) S=(D, R) D={ a, b, c, d, e, f } R={(a,e), (b,c), (c,a), (e,f), (f,d)}
数据项(data item):构成数据元素的项目。是具 有独立含义的最小标识单位(又称字段、域、属 性等)。
三者之间的关系:数据>数据元素>数据项 例:班级通讯录 > 个人记录 > 姓名、年龄……
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
解:上述表达式可用图形表示为:
b
c
a
ef
d
此结构为线性的。
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
2) S=(D, R) D={di | 1≤i≤5} R={(di , dj ), i<j}
解:上述表达式可用图形表示为:
d1
数据结构(data structure):由某一数据元素的集 合以及该集合中所有数据元素之间的关系组成。 记为:
Data_Structure = {D, R} 其中,D 是某一数据元素的集合,R 是该集合中 所有数据元素之间的关系的有限集合。
13.12.2020
Data Structห้องสมุดไป่ตู้re—Ch1 Introduction
主要用于外存的存储表示
▪ 索引存储表示
▪ 散列存储表示
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
顺序存储是把逻辑上相邻的结点存储在物理上相 邻的存储单元里,结点之间的关系由存储单元的 邻接关系来体现。优点:占用最小的存储空间。 缺点:在做插入、删除等操作时需要移动大量的 数据。
d5
d2
该结构是非线性的。
d4
d3
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
数据的存储结构
数据的存储结构(物理结构)是数据的逻辑结构 在计算机存储器中的实现。
数据的存储结构分类:
主要用于内存的存储表示
▪ 顺序存储表示
▪ 链接存储表示
h
数据结构的概念--基本概念和术语
数据的逻辑结构分类:
集合:结构中的数据元素除了同属于一种类 型外,别无其它关系。
线性结构:结构中的数据元素之间存在一对 一的关系。
树型结构:结构中的数据元素之间存在一对 多的关系。
图状结构或网状结构:结构中的数据元素之 间存在多对多的关系。
13.12.2020
h
数据结构的概念 --什么是数据结构
数据结构是一门研究非数值计算的程序设计问题 中计算机的操作对象以及它们之间的关系和操作 等等的学科。
地位: 计算机科学中的一门综合性的专业基础课; 介于数学、计算机硬件和计算机软件之间的核心课程。
学习方法: 以学习思想为主,以高级程序设计语言的表达为途径。
链式存储借助指示元素存储地址的指针表示数据 元素间的逻辑关系。优点:易于插入、删除等操 作。缺点:占用较多的存储空间(指针域)。
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
索引存储用结点的索引号来确定结点的存储地址。 优点:索引检索速度快。缺点:增加额外的索引 表,占用较多的存储空间,在插入、删除时还要 修改索引表,花费较多时间。
散列结构是根据结点的关键码通过一个函数计算 直接得到该结点的存储地址。
综上,数据的逻辑结构根据问题所要实现的功 能建立,数据的物理结构根据问题所要求的响应 速度、处理时间、修改时间、存储空间和单位时 间的处理量等建立,是逻辑结构的存储映像。
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
数据的逻辑结构 数据的逻辑结构从逻辑关系上描述数据,与数据 的存储无关; 数据的逻辑结构可以看作是从具体问题抽象出来 的数据模型; 数据的逻辑结构与数据元素本身的形式、内容无 关; 数据的逻辑结构与数据元素的相对存储位置无关。
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
数据的运算 在数据的逻辑结构上定义的操作算法,在数据的 存储结构上实现。 最常用的数据运算有5种:插入、删除、修改、 查找、排序。
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念
先建立数据结构模型再上机实践灵活解决实际问题。
13.12.2020
Data Structure—Ch1 Introduction
h
数据结构的概念--基本概念和术语
数据(data):所有能被计算机识别、存储和处理 的符号的集合(包括数字、字符、声音、图像等 信息)。
数据元素(data element):是数据的基本单位,具 有完整确定的实际意义(又称元素、结点,顶点、 记录等)。
h
数据结构的概念--基本概念和术语
数据结构是数据的组织形式,包括三个方面: 数据元素间的逻辑关系,即数据的逻辑结构; 数据元素及其关系在计算机存储内的表示,即 数据的存储表示; 数据的运算,即对数据元素施加的操作。
13.12.2020
Data Structure—Ch1 Introduction