数据结构电子书
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
山东大学计算机科学与技术学院
数据结构
第1章 C++程序设计
10
树形结构举例
合源自文库机构人员
总裁
销售副总裁
市场副总裁
… …
财务副总裁
开发副总裁
…
…
山东大学计算机科学与技术学院
数据结构
第1章 C++程序设计
11
树形结构举例
Joe家庭成员
山东大学计算机科学与技术学院
数据结构
第1章 C++程序设计
12
树形结构种类
山东大学计算机科学与技术学院 数据结构 第1章 C++程序设计 29
1.2.2 模板函数
程序1-1
int Abc(int a, int b, int c) { return a+b+b*c+(a+b-c)/(a+b)+4; }
程序1-2
float Abc(float a, float b, float c) { return a+b+b*c+(a+b-c)/(a+b)+4; }
山东大学计算机科学与技术学院 数据结构 第1章 C++程序设计 23
算法特性
输入 有0个或多个输入 输出 有一个或多个输出(处理结果) 确定性 每步定义都是确切无歧义的 有穷性 算法应在执行有穷步后结束(每条 指令的执行次数必须是有限的) 有效性(能行性) 每一条运算应足够基本 (每条指令的执行时间都是有限的)
山东大学计算机科学与技术学院 数据结构 第1章 C++程序设计
5
什么是数据结构?
数据结构:
是一种数据类型,主要讨论composite(复合)的
1、其数据值(实例)是可以进一步分解为数据元 素的集合,该数据元素可以是原子的或是复合 的。 2、数据元素之间有一个关系的集合。
在许多数据结构的书籍之中,通常将数据元素及数
殷人昆 编著; 清华大学出版社 清华大学出版社 高等教育出版社 高等教育出版社
数据结构习题解析(用面向对象方法与C++描述)
殷人昆,徐孝凯编著;
数据结构与算法
张铭 王腾蛟 赵海燕;
数据结构与算法-学习指导与习题解析
张铭 赵海燕 王腾蛟;
C++程序设计语言(特别版)
(美)Bjarne Stroustrup (著);裘宗燕(译);机械工业出 版社
数据结构
山东大学计算机科学与技术学院
数据结构
第1章 C++程序设计
1
教材
数据结构、算法与应用—C++语言描述 (美)Sartaj Sahni著; 汪诗林 孙晓东等译, 机械工业出版社
山东大学计算机科学与技术学院
数据结构
第1章 C++程序设计
2
教材、参考书
数据结构(用面向对象方法与C++描述)(第2版)
山东大学计算机科学与技术学院
数据结构
第1章 C++程序设计
24
课程学习内容
1、预备知识 第1章: C++程序设计 第2章: 程序性能 2、数据结构 线性结构: 第3章:线性表 第4章:数组和矩阵 第5章:栈 第6章:队列 第7章:跳表和散列
山东大学计算机科学与技术学院 数据结构 第1章 C++程序设计 25
数据结构
第1章 C++程序设计
9
树形结构
又称层次结构。元素之间为一对多非线性关系。 数据元素之间的关系 r称为层次关系,或称“父子 关系”、“上下级关系”等 每一个元素可以有多于一个的“直接下级”(或孩 子),但是它只能有唯一的“直接上级”(或父 母)。
树形结构的最高层次的元素称为根(root)。只 有它没有父母。
山东大学计算机科学与技术学院
数据结构
第1章 C++程序设计
20
数据结构
在许多数据结构的书籍之中,数据结构包括 三个方面:
逻辑结构:表示数据元素之间的逻辑关系; 存储结构:数据结构在计算机存储器中的表示, 也称存储表示(数据描述); 运算(操作):作用于数据结构上的运算(查找、 插入、删除)。
……
栾汝书
……
S02
……
ai+1
…
……
an
运算(操作):建立、插入、删除、查找等
山东大学计算机科学与技术学院 数据结构
an ^
22
第1章 C++程序设计
算法
对特定问题求解过程的描述,是指令的有限
序列,也即,为解决某一特定问题而采取的
具体有限的操作步骤。
程序是算法的一种实现,计算机按照程序逐
步执行算法,实现对问题的求解。
数据结构
第1章 C++程序设计
31
1.2.3 引用参数
template<class T> T Abc(T a, T b, T c) { return a+b+b*c+(a+b-c)/(a+b)+4; } T : Matrix(10*10)
山东大学计算机科学与技术学院
数据结构
第1章 C++程序设计
21
例:书目检索自动化问题
登录号 001 002 003 书名 高等数学 理论力学 高等数学 作者 樊应川 罗远祥 华罗庚 分类号 S01 L01 S01
a1 a2 存储 〓〓》 …… ai ai+1 a3
a1
a2
…
ai
004
……
线性代数
第1章 C++程序设计
山东大学计算机科学与技术学院
数据结构
第1章 C++程序设计
27
本章内容:
C++特性:
参数传递方式(如传值、引用和常量引用)。 函数返回方式(如返值、引用和常量引用)。 模板函数。 递归函数。 常量函数。 内存分配和释放函数:new与delete。 异常处理结构:try,catch和throw。 类与模板类。 类的共享成员、保护成员和私有成员。 友元。 操作符重载。
注意力集中在感兴趣的性质上,不关心数据的描 述方法(存储),操作的具体代码等等。
数据结构 第1章 C++程序设计 16
山东大学计算机科学与技术学院
ADT示例
抽象数据类型Set{ 实例
0或多个互不相同一组元素
操作
Create(): 创建一个空的集合 IsEmpty(): 判断集合是否为空,如果为空则返回true,否则返回false Size(): 返回集合中元素的个数 IsMember(x):判断x是否是集合中的元素,如果是则返回true,否则返回 false Delete(x):在集合中删除元素x Insert(x): 在集合中插入x ……. 集合的并、交、差操作等
据元素之间的逻辑关系称为数据的逻辑结构。
山东大学计算机科学与技术学院 数据结构 第1章 C++程序设计 6
数据结构分类
线性结构
树形结构 非线性结构 图结构 (网络结构)
山东大学计算机科学与技术学院
数据结构
第1章 C++程序设计
7
线性结构
例:“计算机专业课程安排系统”中的课程 数据
课程编号 024002 024010 024016 024020 024021 024024 024026 课程名 程序设计基础 汇编语言 计算机原理 数据结构 微机技术 操作系统 数据库原理 ……
课程学习内容
非线性结构: 树形结构 第8章:二叉树和其他树 第9章:优先队列 第10章:竞赛树 第11章:搜索树 图形结构 第12章:图 3、算法设计方法 第13章: 贪婪算法 第14章: 分而治之算法 第15章: 动态规划
山东大学计算机科学与技术学院 数据结构 第1章 C++程序设计 26
6
3
11
5
4
5
18
4
山东大学计算机科学与技术学院
数据结构
第1章 C++程序设计
15
抽象数据类型
Data Object(数据对象)
一组性质相同的值(或实例)的集合。 某一数据对象, 以及定义于这个数据对象上的一 组操作的总称. 实例及相关操作的说明
数据结构:
抽象数据类型(Abstract Data Type:ADT)
山东大学计算机科学与技术学院 数据结构 第1章 C++程序设计 4
什么是数据结构?
数据类型和数据结构 数据类型: 一组性质相同的值(或实例)的集合, 以及定义于 这个值(或实例)集合上的一组操作的总称. 例:char、bool、int、float、double、void 数据值(或实例): Atomic(原子的):不可再分解。如‘A’、3、2、 5等。 composite(复合):可以再分解,其成分称为 element(元素)。如set:{32.99,-1.03,0,23}、 ‘good’等,即数据值(实例)进一步分解为数据 元素,它们之间有一个关系。
}
一个抽象数据类型要包括哪些操作,这一点由设计者根据需 要确定,例如,对于集合,如果需要,也可以把判别两个集 合是否相等等作为集合上的操作
山东大学计算机科学与技术学院 数据结构 第1章 C++程序设计 17
数据的存储结构(数据的描述)
数据的存储结构是指数据如何在计算机存储
器中存放,是数据逻辑结构的物理存储映象,
山东大学计算机科学与技术学院
数据结构
第1章 C++程序设计
30
1.2.2 模板函数
程序1-3
template<class T> T Abc(T a, T b, T c) { return a+b+b*c+(a+b-c)/(a+b)+4; }
将参数的数据类型作为一个变量,它的值由编 译器来确定。
山东大学计算机科学与技术学院
数据结构
学时 64 48 64 64 64 48 48
…
山东大学计算机科学与技术学院
第1章 C++程序设计
8
线性结构
程序设计基础 汇编语言 计算机原理
数据结构
微机技术
…….
元素之间为一对一的线性关系,第一个元素
无直接前驱,最后一个元素无直接后继,其
余元素都有一个直接前驱和直接后继。
山东大学计算机科学与技术学院
山东大学计算机科学与技术学院
数据结构
第1章 C++程序设计
28
1.2 函数与参数
1.2.1 传值参数
程序1-1
int Abc(int a, int b, int c) { return a+b+b*c+(a+b-c)/(a+b)+4; }
运行时,与传值形式参数相对应的实际参数的值将在函数执行之前被复 制给形式参数。如果实际参数与形式参数的数据类型不同,必须进行类 型转换,从实际参数的类型转换为形式参数的类型,当然,假定这样的 类型转换是允许的。 当函数运行结束时,形式参数所属数据类型的析构函数(destructor)负 责释放该形式参数。当一个函数返回时,形式参数的值不会被复制到对 应的实际参数中。因此,函数调用不会修改实际参数的值。 注:函数在Java中使用术语“方法”。
是属于具体实现的视图,是面向计算机的。
数据的存储结构是逻辑结构用计算机语言的
实现;
山东大学计算机科学与技术学院 数据结构 第1章 C++程序设计 18
数据的存储结构(数据的描述)
常用的数据存储结构
公式化描述(顺序存储) 链表描述(链式存储) 间接寻址(索引存储) 模拟指针(静态链表)
称为图结构(网络结构),每个元素均有多
个“直接上级”(直接前驱)或多个“直接
下级”(直接后继)。
图结构可看作是层次结构的一种扩展—允许
元素具有多个“直接上级”。
山东大学计算机科学与技术学院 数据结构 第1章 C++程序设计 14
图结构 图结构
1 2 1 19
网络结构
16 21 6 33 14 6 6 2 5 3
树形结构存在着很多变种,如树、二叉树、
堆结构等,都有各自独特的有效应用。
树
1 2
二叉树
1
二叉搜索树 9 3 6 3
1 13
3
4
2
5 6 7 8 9 10
11 12 13 14
4
7 8
数据结构
5 9
6
8 5 7
10 11
山东大学计算机科学与技术学院
第1章 C++程序设计
13
图结构(网络结构)
元素之间为多对多非线性关系的非线性结构
山东大学计算机科学与技术学院 数据结构 第1章 C++程序设计 3
课程研究?
著名的计算机科学家,图灵奖得主Niklaus Wirth提出: 算法+数据结构=程序 在程序开发过程中通常需要做到: 高效地描述数据; 设计一个好的算法,该算法最终可用程序来实现。 高效地描述数据⇒数据结构 设计一个好的算法⇒算法设计方法 有关数据结构与算法的研究是计算机科学与工程的 基础性研究之一. 《数据结构》是计算机科学的重要基础课程。
数据结构上操作的实现依赖于数据的存储结构。 良好的存储结构可以有效地促进操作的高效实现。
山东大学计算机科学与技术学院 数据结构 第1章 C++程序设计 19
数据结构
研究数据结构
数据对象:值(或实例)的集合,组成实例的数 据元素及它们之间的关系
数据对象(实际上是实例)的描述 与数据对象相关函数的具体实现 数据对象的良好描述可以有效地促进函数的高 效实现。