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