数据结构-使用C语言朱战立

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15
课前的话——计算机系列课程之间的联系
计算机概论与上机操作(对 21 世纪公民要求)
程序设计与算法语言(BASIC FORTRAN PASCAL C 等,怎样使用计算机)
计算机组成原理(所有计算机的共性)
微机原理及应用(特定机型介绍,单片机或 8086 PC 机,怎样应用计算机)
控制之路
数据处理之路
2
内容安排

内容
学时 章
内容
学时
1 绪论
4
7 树和二叉树 10
2
线性表
48

10
3 栈和队列
8
9
排序
4
4

2 10
查找
4
5
数组
4
11 上机(共10次) 20
合计
70
3
对学生的几点要求
1、上课认真听讲,适当做好笔记。 2、考试成绩分两部分:平时成绩(包括出勤和上机实验)占
20%,期末成绩占80%。 3、课后需要多读课文和参考书,上网查看相关内容,在理解
不能同时进行比赛的项目之间连上一条边。
(3)某选手比赛的项目必定有边相连(不能 同时比赛)。
12
姓名 丁一 马二 张三 李四 王五
项目1 A C C D B
项目2 B D E F F
项目3 E
F A
只需 安排四 个单位 时间进 行比赛
比赛 比赛项目 时间
1 A,C 2 B,D
3E
4F
13
非数值计算问题:
注意:上机时要必须用具体语言实现,如 C或C++等
37
• 队列的抽象数据类型定义
• ADT Queue{ 数据对象:D={ai|ai∈ElemSet, i=1,2, …,n, n≥0} 数据关系:R1={<ai-1,ai>|ai-1,ai∈D, i=1,2, …,n } 约定a1为队列头,an为队列尾。
• R={r}; • r={<01,02>,<01,03>,<01,04>,<02,05>, <02,06>,<03,07>,<07,08>}.试分析该数据结
构属于哪种逻辑结构.
树型
30
作业
• 什么是逻辑结构与存储结构,他们之间 的关系如何?
31
• 设有数据逻辑结构为:line=(D,R);其中 D={a,b,c,d,e,f,g};R={r};r={<a ,b>,<b,c>,<c,d>,<d,e>,<e,f>,<f,g>}. 试画出对应的图形并说明属于哪种逻辑 结构.
19
2、基本术语
(1)数据:所有能被计算机识别、存储和处理的符号的集合(包 括数字、字符、声音、图像等信息 )。
(2)数据元素:是数据的基本单位,具有完整确定的实际意义。 在计算机程序中通常作为一个整体进行考虑和处理。一个数 据元素可由若干个数据项组成。
(3)数据项:构成数据元素的项目。它是数据不可分割的最小单 位。
17
《数据结构课程》所处的地位 :
18
数据结构的核心研究内容
数据的逻辑结构、存储结构及它们之 间的关系和相应的基本操作运算的定义和 实现。
本书围绕数据结构的三种基本结构: 线性结构(第2-5章)、树形结构(第7章) 和图形结构(第8章)展开讨论,研究解 决如下问题:一个具体问题的逻辑数据结 构是什么?适宜选用什么样的存储结构? 采用什么样的操作实现算法效率更高?
非数值计算问题:
例1.1 电话号码查询问题:
(1)按顺序存储方式:须遍历表 (2)按姓氏索引方式:索引
要写出好的查找算法,取决于这张表的 结构及存储方式。
电话号码表的结构和存储方式决定了查 找(算法)的效率。
10
非数值计算问题:
例1.2 田径赛的时间安排问题(无向图的 着色问题) :
设有六个比赛项目,规定每个选手至多可参加 三个项目,有五人报名参加比赛(如下表所示 )设计比赛日程表,使得在尽可能短的时间内 完t;02,05>,<05,04>,<04,06>,<06,03>}.
•试分析该数据结构属于哪种逻辑结构。
•01->02->05->04->06->03 •线性结构
29
• 2、设有数据逻辑结构为tree={D,R},其中 D={01,02,03,04,05,06,07,08};
• 早期:
主要用于数值计算。
后来:
处理逐渐扩大到非数值计算领域(能 处理多种复杂的具有一定结构关系的数据 )。
8
数值计算解决问题的一般步骤

数学模型→选择计算机语言→编出程序→ 测试→最终解答。 数值计算的关键是:如何得出数学模型( 方程)? 程序设计人员比较关注程序设计的技巧。
非数值计算问题:
数据元素之间的相互关系一般无法用数 学方程加以描述
数据结构
教材: 朱战立编著,数据结构——使用 C语言(第3版),西安交通大 学出版社,2003年
学时数:70(50学时授课+20学时上机)
教材:朱战立编著,数据结构(使用C语言)第 3版,西 安交通大学出版社 ,2003年
参考书: [1]严蔚敏等,数据结构(C语言版),清华大 学出版社 [2] 数据结构学习指导与典型题解,朱战立等编 著,西安交通大学出版社 ,2002年
姓名
项目 1
项目 2
项目 3
丁一
跳高
跳远
100 米
马二
标枪
铅球
张三
标抢
100 米
200 米
李四
铅球
200 米
跳高
王五
跳远
200 米
11
非数值计算问题
----田径赛的时间安排问题解法
(1)设用如下六个不同的代号代表不同的项 目:
跳高 跳远 标枪 铅球 100米 200米
A BCD
EF
(2)用顶点代表比赛项目
解:上述表达式可用图形表示为:
d1
d5
d2
该结构是非线性的。
d4
d3
26
解释2:什么叫数据的物理结构?
答:物理结构亦称存储结构,是数据的逻辑结构在计 算机存储器内的表示(或映像)。它依赖于计算机。
存储结构可分为4大类: 顺序、链式、索引、散列
例:复数3.0-2.3i 的两种存储方式:
法1:地址 0300 0302
(6)抽象数据元素:抽象定义的、没有实际 含义的数据元素。
21
2、基本术语 (续)
(7)数据结构:是相互之间存在一种或多种特定关系的数据元素 的集合。或按照一定逻辑关系组织,并按一定存储方法存储 的数据的集合,且需要定义一系列运算。逻辑结构、存储结 构和运算合称为三要素。表示为: Data_Structure=(D, R) 其中,D—元素有限集,R—关系有限集
数据类型:是一个值的集合和定义在该值上的 一组操作的总称。
抽象数据类型:由用户定义,用以表示应用问题的数 据模型。它由基本的数据类型构成,并包括一组相关 的服务(或称操作)
它与数据类型实质上是一个概念,但其特征是使用与 实现分离,实行封装和信息隐蔽(独立于计算机)
35
2 抽象数据类型如何定义
抽象数据类型可以用以下的三元组来表示: ADT = (D,R,P)
内容 3.0 -2.3
2字节
法2:地址 0300
0302
内容 3.0
0415
0415 -2.3
27
解释3:什么是数据的运算? 答:在数据的逻辑结构上定义的操作算法。 它在数据的存储结构上实现。 最常用的数据运算有 5 种:
插入、删除、修改、查找、排序
28
练习 •1、设有数据逻辑结构为:line=(D,R);其中 D={01,02,03,04,05,06}; •R={r};
(4)数据类型:指一个类型和定义在这个类型上的操作集合。例: C语言(基本类型:整型、浮点型、字符型等构造类型:数组、 结构、联合、指针、枚举等)
20
(5)抽象数据类型(Abstruct Data Type, 简称ADT):是指一个数学模型以及定 义在该模型上的一组操作。抽象数据类 型的定义取决于它的一组逻辑特性,而 与其在计算机内部如何表示和实现无关。 即不论其内部结构如何变化,只要它的 数学特性不变,都不影响其外部的使用。
非线性
24
例:用图形表示下列数据结构,并指出它们是属于线 性结构还是非线性结构。
(1) S=(D, R) D={ a, b, c, d, e, f } R={(a,e), (b,c), (c,a), (e,f), (f,d)}
解: 上述表达式可用图形表示为:
bc a e
fd
此结构为线性的。
25
(2) S=(D, R) D={di | 1≤i≤5} R={(di , dj ), i<j}
16课前的话课前的话计算机系列课程之间的联系计算机系列课程之间的联系计算机概论与上机操作对21世纪公民要求程序设计与算法语言basicfortranpascalc等怎样使用计算机计算机组成原理所有计算机的共性微机原理及应用特定机型介绍单片机或8086pc机怎样应用计算机控制之路数据处理之路汇编语言程序设计数据结构数据结构单片机技术微机接口操作系统软件技术基软件技术基础础数据库理论计算机网络软
什么是程序、软件?
N.沃思(Niklaus Wirth)教授提出: 程序=算法+数据结构
以上公式说明了如下两个问题: (1)数据上的算法决定如何构造和组织数据 (算法→数据结构)。 (2)算法的选择依赖于作为基础的数据结构 (数据结构→算法)。
软件=程序+文档(软件工程的观点)
7
电子计算机的主要用途:
讨论: 1 什么是算法?如何评判算法的好坏? 2 时间复杂度和空间复杂度如何表示? 3 计算举例
39
1 什么是算法?如何评判一个算法的好坏?
算法:是对特定问题求解步骤的一种描述,它是指令 的有限序列,是一系列输入转换为输出的计算步骤。
好的程序设计:好算法+好结构 算法的基本特性:有穷性、确定性、可行性、必有输出 算法评价指标: 正确性、可读性、健壮性、高效率与低存储量需求(见课本P20)
主要考虑的是设计出合适的数据结 构及相应的算法。 即:首先要考虑对相关的各种信息如 何表示、组织和存储? 因此,可以认为:数据结构是一门研 究非数值计算的程序设计问题中计算 机的操作对象以及它们之间的关系和 操作的学科。
14
数据结构课程的形成和发展:
形成阶段: 60年代初期,“数据结构”有关的内容散 见于操作系统、编译原理和表处理语言等 课程。1968年,“数据结构”被列入美国 一些大学计算机科学系的教学计划。 发展阶段: 数据结构的概念不断扩充,包括了网络、 集合代数论、关系等“离散数学结构”的 内容。 70年代后期,我国高校陆续开设该课程。
汇编语言程序设计
数据结构
单片机技术/微机接口
操作系统
软件技术基础
数据库理论
计算机网络
软件工程
应用系统设计
计算机网络
16
数据结构课程的地位
它是计算机专业及相关专业的核心课 程之一,是计算机及相关专业的重要骨干 基础课程。
它针对非数值计算的程序设计问题, 研究计算机的操作对象以及它们之间的关 系和操作。即其研究目的是研究有效地组 织和处理非数值类型数据的理论、技术和 方法。
22
数据结构涵盖的内容
23
解释1: 什么叫数据的逻辑结构?
答:指数据元素之间的逻辑关系。即从逻辑关系上描述 数据,它与数据的存储无关,是独立于计算机的。
逻辑结构可细分为4类:
集合结构: 仅同属一个集合
线性结构: 一对一(1:1) 线 性
树 结 构: 一对多(1:n) 图 结 构: 多对多 (m:n)
数据对象 D上的关系集 D上的操作集
ADT抽象数据类型名{
ADT 常用 定义 格式
数据对象:<数据对象的定义> 数据关系:<数据关系的定义> 基本操作 :<基本操作的定义>
} ADT抽象数据类型名
36
1.4.3 抽象数据类型如何表示和实现 抽象数据类型可以通过固有的数据类型(如整型、 实型、字符型等)来表示和实现。 (参看课本P28,线性表的抽象数据类型,思考用 具体C语言如何实现)
• 基本操作: InitQueue( &Q ) 操作结果:构造一个空队列Q。 DestroyQueue ( &Q ) 初始条件:队列Q已存在。 操作结果:销毁队列Q。
QueueLength( Q ) 初始条件:队列Q已存在。 操作结果:返回Q的数据元素个数,即队列的长
度。
38
1.5 算法效率的度量
基本内容的基础上,多看、多做习题。 4、上机实验十分重要,一定要在上机前做好充分准备,多采
用不同的数据存储结构和不同的实现算法解决一个问题。
4
第1章 绪 论
讨论5个问题:
1.1 数据结构的基本概念 1.2 抽象数据类型和软件构造方法 1.4 算法和算法的时间复杂度 1.5 算法书写规范
5
1.1 数据结构的基本概念
1、举例
建立一个学生档案系统。学生表包括学号、姓名、 性别、籍贯。要求:查找“王红”是否存在。
解决的方法步骤: 1) 如何记录所有学生记录(及选择何种逻辑数据结 构)? 2) 选择何种存储结构? ❖ 若把所有记录依次存储在一个数组中——采用 顺序存储结构 ❖ 若采用指针链表——采用链式存储结构
6
为什么要学习数据结构?
32
• 将上述关系改为r={<a,b>,<a, c>,<b,d>,<b,e>,<c,f>,<c,g>}.试画出对应 的图形并说明属于哪种逻辑结构.
33
1.4 什么是抽象数据类型 讨论:
1 数据类型与抽象数据类型的区别? 2 抽象数据类型如何定义? 3 抽象数据类型如何表示和实现?
34
1 数据类型与抽象数据类型的区别
相关文档
最新文档