ch1 数据结构算法与应用 --c++语言描述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输入 输出
有0个或多个输入 有一个或多个输出(处理结果)
确定性 每步定义都是确切无歧义的 有穷性 算法应在执行有穷步后结束(每条 指令的执行次数必须是有限的)
有效性(能行性) 每一条运算应足够基本 (每条指令的执行时间都是有限的)
Chapter 1
PROGRAMMING IN C++
25
顺序存储(公式化描述) 所有元素依次存放在一片连 续的存贮单元中,逻辑上相 邻的元素存放到计算机内存 仍然相邻。
a1
a2 a3 ……
ai
ai+1 ……
an
Chapter 1 PROGRAMMING IN C++
19
数据的存储结构(数据的描述)
链式存储(链表描述) 所有元素依次存放在可以不连续的存贮单 元中,元素之间的关系可以通过指针(地 址)表示。
an
an ^
26
数据结构的三个方面
数据结构的三个方面:百度文库线性结构
数据的逻辑结构
线性表 栈 队列……
树形结构 非线性结构 图形结构
数据的存储结构
顺序存储结构
链式存储结构……
数据的运算(操作):
检索、排序、插入、删除、修改等
Chapter 1 PROGRAMMING IN C++
27
CHAPTER
1
Chapter 1 PROGRAMMING IN C++
29
1.2 FUNCTIONS AND PARAMETERS (函数与参数)
Chapter 1
PROGRAMMING IN C++
30
1.2.1 Value Parameter(传值参数)
Program1.1 //计算一个整数表达式 int Abc(int a, int b, int c) { return a+b+b*c+(a+b-c)/(a+b)+4; }
数据:数据是信息的载体,是描述客观事物的数、 字符、以及所有能输入到计算机中,被计算机程序 识别和处理的符号的集合,它是计算机程序使用、 加工的原料和输出的结果。 数据元素:数据的基本单位,在计算机中通常被作 为一个整体看待和处理。如学生档案中的一条记录。 姓名 所在院系 性别 出生日期 籍贯 成绩 年 月
Chapter 1
PROGRAMMING IN C++
5
数据结构
数据结构: 按照逻辑关系组织起来的一批数据 , 按一定的存储方法把它存储在计算机中, 并 在这些数据上定义了一个运算的集合. 包括三个方面:
逻辑结构:表示数据元素之间的逻辑关系; 存储结构:数据结构在计算机存储器中的表示, 也称存储表示(数据描述); 运算(操作):作用于数据结构上的运算(查找、 插入、删除) 。
PROGRAMMING IN C++
11
树形结构
又称层次结构。元素之间为一对多非线性关系。 数据元素之间的关系 r称为层次关系,或称“父子 关系”、“上下级关系”等 每一个元素可以有多于一个的“直接下级”(或孩 子),但是它只能有唯一的“直接上级”(或父 母)。
树形结构的最高层次的元素称为根(root)。只 有它没有父母。
Before the function is executed,the value of the actual parameter is copied into the formal parameter(copy constructors复制构造函数) When a function terminates,the value formal parameters are destroyed(destructors析构函数)
Data Structure
Wang Xiaolin(王晓琳) xlwang@sdu.edu.cn
Chapter 1
PROGRAMMING IN C++
1
教材
Data Structure,Algorithms,and Applications in C++ (美)Sartaj Sahni著
数据结构、算法与应用—C++语言描述
PROGRAMMING IN C++
17
数据的存储结构(数据的描述)
数据的存储结构是指数据如何在计算机中存 放,是数据逻辑结构的物理存储映象,是属
于具体实现的视图,是面向计算机的。
数据的存储结构是逻辑结构用计算机语言的 实现;
Chapter 1 PROGRAMMING IN C++
18
数据的存储结构(数据的描述)
Chapter 1 PROGRAMMING IN C++
7
数据的逻辑结构
数据的逻辑结构从逻辑关系上描述数据,与 数据的存储无关; 数据的逻辑结构可以看作是从具体问题抽象 出来的数据模型; 数据的逻辑结构与数据元素本身的形式、内 容无关; 数据的逻辑结构与数据元素的相对存储位置 无关。
Chapter 1 PROGRAMMING IN C++
8
数据的逻辑结构分类
线性结构
树形结构
图结构 (网络结构)
Chapter 1
PROGRAMMING IN C++
9
线性结构
例:“计算机专业课程安排系统”中的课程 数据
课程编号 024002 024010 024016 024020 024021 024024 024026 课程名 程序设计基础 汇编语言 计算机原理 数据结构 微机技术 操作系统 数据库原理 ……
数据结构与算法
张铭 王腾蛟 赵海燕;
数据结构与算法-学习指导与习题解析
张铭 赵海燕 王腾蛟; 高等教育出版社
C++程序设计语言(特别版)
(美)Bjarne Stroustrup (著);裘宗燕(译);机械工业出 版社
Chapter 1 PROGRAMMING IN C++
3
课程研究?
在程序开发过程中通常需要做到:
(美)Sartaj Sahni著 汪诗林 孙晓东等译, 机械工业出版社
Chapter 1
PROGRAMMING IN C++
2
参考书
数据结构(用面向对象方法与C++描述)(第2版)
殷人昆 编著; 清华大学出版社
清华大学出版社 高等教育出版社
数据结构习题解析(用面向对象方法与C++描述)
殷人昆,徐孝凯编著;
例:书目检索自动化问题
登录号
001
书名
高等数学
作者
樊应川
分类号
S01
a1
a2 存储 〓〓》 …… a3
a1
a2
…
002 003
004 ……
理论力学 高等数学
线性代数 ……
罗远祥 华罗庚
栾汝书 ……
L01 S01
S02 ……
ai
ai+1 ……
ai
ai+1
…
运算(操作):建立、插入、删除、查找等
Chapter 1 PROGRAMMING IN C++
树形结构存在着很多变种,如树、二叉树、 堆结构等,都有各自独特的有效应用。
树
1 2
二叉树
1
二叉搜索树
9
3 6
13
3
4
2
5 6 7 8 9 10
11 12 13 14
4 7 8
5 9
6
1
3 5 7
8
10
11
Chapter 1
PROGRAMMING IN C++
15
图结构(网络结构)
元素之间为多对多非线性关系的非线性结构 称为图结构(网络结构),每个元素均有多
Chapter 1
PROGRAMMING IN C++
12
树形结构举例
合作机构人员
总裁
销售副总裁
市场副总裁
… …
财务副总裁
开发副总裁
…
…
Chapter 1
PROGRAMMING IN C++
13
树形结构举例
Joe家庭成员
Chapter 1
PROGRAMMING IN C++
14
树形结构种类
PROGRAMMING IN C++ (C++程序设计)
Chapter 1
PROGRAMMING IN C++
28
C++ Language Features
The different modes of parameter(参数) passing in The different modes in which a function(函数) may return a value Template functions(模板函数) Recursive functions(递归函数) Constant functions(常元函数) The C++ space allocation(分配) and deallocation(释放) functions new and delete The C++ exception handling (异常处理)constructs: try,catch,and throw Classes and template classes Public,protected,and private class members Friends(友元) of a class Operator overloading(操作符重载)
个“直接上级”(直接前驱)或多个“直接 下级”(直接后继)。
图结构可看作是层次结构的一种扩展—允许 元素具有多个“直接上级”。
Chapter 1 PROGRAMMING IN C++
16
图结构
图结构
1 2 1
网络结构
16 21 6
33 14 2
19
5 6 6
3
6
3
11
5
4
5
18
4
Chapter 1
高效地描述数据; 设计一个好的算法,该算法最终可用程序来实现。
高效地描述数据⇒数据结构 设计一个好的算法⇒算法设计方法 有关数据结构与算法的研究是计算机科学与 工程的基础性研究之一. 《数据结构》是计算机科学的重要基础课程。
Chapter 1 PROGRAMMING IN C++
4
什么是数据结构?
Chapter 1
PROGRAMMING IN C++
32
1.2.2 Template functions(模板函数)
Program1.1 //计算一个整数表达式 int Abc(int a, int b, int c) { return a+b+b*c+(a+b-c)/(a+b)+4; } Program1.2 //计算一个浮点数表达式 float Abc(float a, float b, float c) { return a+b+b*c+(a+b-c)/(a+b)+4; }
Chapter 1 PROGRAMMING IN C++
6
数据的逻辑结构
数据的逻辑结构是指从解决问题的需要出发, 为实现必要的功能所建立的数据结构,它属 于用户的视图,是面向问题的(或者说是面 向应用的)。 数据的逻辑结构由某一数据元素的集合以及 该集合中所有数据元素之间的关系组成。可 用二元组 B = (K, R)表示。 – K :某一数据元素的集合 – R : K上所有数据元素之间的关系的有 限集合
first e1 e2 e3
……
0
en
Chapter 1
PROGRAMMING IN C++
20
数据的存储结构(数据的描述)
索引存储(间接寻址)
元素表中的每个元素也可以存储在存储器的不同区域中 元素地址则被收集在一张表中,该表的第 i 项指向元素表 中的第 i 个元素,所以这张表是一个用来存储元素地址的 表。
Chapter 1
PROGRAMMING IN C++
23
算法
对特定问题求解过程的描述,是指令的有限 序列,也即,为解决某一特定问题而采取的
具体有限的操作步骤。
程序是算法的一种实现,计算机按照程序逐 步执行算法,实现对问题的求解。
Chapter 1 PROGRAMMING IN C++
24
算法特性
z=Abc(2,x,y) 1. 形式参数( formal parameter) 2. 实际参数(actual parameter) 3. 复制构造函数( copy constructor) 4. 析构函数(destructor)
Chapter 1 PROGRAMMING IN C++
31
1.2.1 Value Parameter(传值参数)
PROGRAMMING IN C++
学时 64 48 64 64 64 48 48
…
Chapter 1
10
线性结构
程序设计基础 汇编语言 计算机原理
数据结构
微机技术
…….
元素之间为一对一的线性关系,第一个元素 无直接前驱,最后一个元素无直接后继,其 余元素都有一个直接前驱和直接后继。
Chapter 1
Chapter 1
PROGRAMMING IN C++
21
数据的存储结构(数据的描述)
模拟指针
类似于链接描述,区别在于它用整数代替了C ++ 指针。
Chapter 1
PROGRAMMING IN C++
22
数据的运算
作用于数据结构上的运算: 查找、修改、插入、删除,等等 。
数据的运算(操作)的定义直接依赖于逻辑结 构。 运算(操作)的实现依赖于存储结构。