当前位置:文档之家› 第一章 数据结构绪论new

第一章 数据结构绪论new


内容
• 实例求解
。数据结构研究的问题 • 数据结构的基本概念 • 算法的基本概念
• 算法的评价
本课程研究的问题
原始数据 程序 结果数据
数据处理的种类和能力
数 (整数,实数) 字符

数值数据
文字 图形 图象 声音
字符串
数据
非数值数据
数据:客观对象的符号表示 数学中的整数、实数, 课程名,地名、书名
用计算机解决问题的步骤
问题分析阶段: 弄清所要解决的问题是什么,并使用 规范说明 语言或数学语言给出系统的需求模型 设计阶段: 建立程序系统的结构,重点是算法的设计和 数据结构的设计 编码阶段: 采用适当的程序设计语言,编写出可执行的程序 程序测试和维护:发现和排除在前几个阶段中产生 的错误,经测试通过的程序便可投入运行,在运行 过程中还可能发现隐含的错误和问题
例2-集合抽象数据类型





ADT Set is Operations isEmpty 判断集合是否是空集合 add 给集合增加一个元素 remove 删除集合中的一个元素 isIn 判断一个元素是否在当前集合中 end ADT Set
数据结构基本概念——基本术语
结构(Structure):

抽象数据类型的实质是抽象出了数据类 型的使用要求,而把它的具体表示方式 和运算的实现细节都隐藏起来。 抽象数据类型仅仅规定了数据类型应该 具有的行为(操作)。一旦抽象数据类 型被正确实现,就好像程序设计语言中 所提供的数据类型那样,可以被自由使 用。

数据结构基本概念——基本术语
抽象数据类型意义和作用(2)
要求 • 认真准备,有备而来 • 严禁玩游戏 • 培养独立解决问题的能力
交作业的时间:
• 按时交上次布置的作业,现场运行 并评判(百分制)
答疑安排
平时有问题可在课下及上机时提问


有何意见及建议请及时反映
第一章 绪 论
•从问题到程序 •抽象数据类型 •数据结构 •算法
第一章 绪 论
问题:
• • • • • • • 为什么要学习数据结构 什么是数据类型 什么是抽象数据类型 数据结构的分类 什么是算法 什么是算法的时间、空间复杂度 如何计算算法的时间复杂度
整数的抽象数据类型 三元组(K,R,P)表示:
–K={整数集合} –R={<0,1>,<1,2>,<2,3>,…} –P={+,-,*,/,%}
ADT Circle is
例1-抽象数据类型圆
area 计算圆的面积
operations
circumference
计算圆的周长
getRadius
获取圆的半径 setRadius 设置圆的半径 end ADT Circle
实例求解-算法设计
常见算法: 穷举法、贪心法、回溯法、分治法、动态规划法、分支 界限 法……… 选用贪心法,贪心法思想为: 先用一种颜色给尽可能多的结点上色; 然后用另一种颜色在未着色结点中给尽可能多的结点上色; 如此反复直到所有结点都着色为止。 选用一种新颜色给结点上色时要做以下工作: 1.选出一个未着色的结点并用该新的颜色上色。 2.寻找那些仍未着色的结点,如果某结点与用新颜色着色的结点 没有边相连,则可将这个结点用该颜色上色。
授课内容
第一章 概论
• 算法的概念,算法的分析
• 数据结构的概念、数据结构的分类
授课内容
第二章 线性表
• 线性表的基本概念 • 线性表的顺序存储实现(顺序表)
•线性表的链接存储实现(链接表)
•顺序表的基本运算 •线性表的应用(Josephus问题)
授课内容
第三章 字符串
• 字符串的基本概念 • 字符串的基本操作 • 模式匹配问题
解释为把某些成分(成员,元素,原子等) 按一定的规律或方式组织在一起的实体。或解释 为把某些成分组织在一起的方式。
例如:
人体结构、土木结构、分子结构、 文章结构、数据结构
数据结构是以数据为成员的结构。
数据结构基本概念——基本术语
数据结构(Data Structure):是计算机中表示
(存储)的、具有一定逻辑关系和行为特征的 一组数据。其中的每一个数据元素称为这个 结构的一个结点。 数据结构(Data Structure):可以理解为抽象 数据类型的物理实现。 主要解决的两个问题:
2、结构中各元素的存储方式 3、结构具有的行为特征
数据结构基本概念
树形结构: 例2:问题:计算机和人对弈 模型:树形结构
数据结构基本概念
图形结构: 例 3: 问题:多叉路口交通灯的管理 模型:图形结构
C B A E
D
图 1.1 一个交叉路口的模型
数据结构基本概念——基本术语类型(t Nhomakorabeape):
本课程研究的问题
数据结构的研究问题: 非数值数据之间的结构关系, 及如何表示,如何存储,如何处理。
本课程讨论的问题: 应用中常用的几种数据间的结构关系, 及如何表示,如何存储,如何处理。
数据结构基本概念
数据结构主要关心的是下列三个方面:
1、结构中各元素之间的逻辑关系: 线性结构:如图书馆的书目索引 树形结构: 图形结构:
是一组值(或者对象)的集合。

例如:


布尔作为一种类型是由真(true)和假 (false)两个值组成的集合; 布尔向量也可以作为一种类型,它的每个值 是一个由true或false构成的向量。
数据结构基本概念——基本术语

数据类型(data type) 通常是指在计算机(语言)中可以使用的一 个类型,它不但包括这个类型的值的集合,还包 括定义在这个类型上的一组操作。
一种染色结果
AB
AC
AD
BA
BC
BD
DA
DB
DC
EA
EB
EC
ED
图1.2
交叉路口的图示模型
实例求解-程序设计(贪心法)
首先,为问题中所有有关数据设计适当的表示形式, 不仅包括需要表示的结点和连接,可能还有为计算过程 的实现而用的辅助性数据结构。然后选择一种适当的程 序设计语言实现这些数据结构,并在设计好的数据结构 上精确地描述上面提出的算法,完成一个程序,使之能 在计算机上运行。 假设需要着色的图是G,集合V1包括图中所有未被 着色的结点,着色开始时V1是G所有结点集合。NEW表 示已确定可以用新颜色着色的结点集合。从G中找出可 用新颜色着色的结点集的工作可以用下面的程序框架描 述:
第一章 绪 论
算法与数据结构讨论的是程序设计中 的核心问题,也是计算机科学领域的一个 基本的问题
第一章 绪 论
引入:
C D
• 五叉路口设计一个交 通信号灯管理系统
B A E
图 1.1 一个交叉路口的模型
内容
• 实例求解
• 计算科学概述 • 数据结构的基本概念 • 算法的基本概念
• 算法的评价
实例求解
授课内容
第五章 树与二叉树(续)
• 二叉树的基本运算二叉树的各种周游算法
• 线索二叉树
• Huffman树的概念及应用
授课内容
第六章 检索与字典
• 检索与字典基本概念 • 顺序检索,二分检索 • 散列表、散列函数的基本概念,散列函数的 选择,碰撞的处理方法 • 二叉排序树 • 平衡二叉排序树* • B树与B+树*
授课内容
第四章 堆栈与队列
•堆栈
堆栈的概念,堆栈的存储结构,堆栈的基 本运算,堆栈的应用
•队列
队列的概念,队列的存储结构,队列的基 本运算,队列的应用
授课内容
第五章 树与二叉树
• 树的基本概念
• 树的存储结构及其基本运算
• 二叉树的概念及种类-完全二叉树与满二叉树 • 二叉树的存储结构
• 树、树林和二叉树的相互转换
授课内容
第七章 排序
• 排序的基本概念 • 插入排序 • 直接插入排序 • 二分法插入排序 • 表插入排序 • 选择排序 • 直接选择排序 • 交换排序 • 冒泡排序 • 各种排序算法的复杂性分析
授课内容
第八章 图结构
• 图的基本概念及有关术语 • 图的存储表示法 • 图遍历 • 最小生成树 • 最短路径 • 拓扑排序

数据结构基本概念——基本术语
抽象数据类型的概念最早出现在 20 世纪 70 年代,它是面向对象方法的重要理论 基础。 本书在内容的组织中仅仅使用了抽象数 据类型的概念,而没有严格采用面向对 象的程序设计语言的描述机制(例如 class)。

数据结构基本概念——基本术语
抽象数据类型意义和作用(1)
E A EB
图 1.1 一个交叉路口的模型
EC
ED
有些通行方向显然不能同时进行,相应的结点间画一 条连线。
AB AC AD
BA
BC
BD
DA
DB
DC
EA
EB
EC
ED
图1.2
交叉路口的图示模型
实例求解-问题分析
如果把上图中的一个结点理解为一个国家,结点之 间的连线看作两国有共同边界,上述问题就变成著名的 “着色问题”:即求出最少要几种颜色可将图中所有国 家着色,使得任意两个相邻的国家颜色都不相同。通过 上面的分析,我们就获得了该交通管系统的数学模型: 图 但是,常见程序设计语言并不直接支持图和集合等, 通常只提供了一些基本数据类型(如整数,实数,字符 等)和一些数据手段(如数组,记录,指针等)。 要解决计算问题,用户必须用自己选定的语言所提 供的机制实现这些数据结构(集合,图等)和操作(对 集合元素的增删,对图的边的判断等),这些就是数据
授课内容
第九章 稀疏矩阵和广义表
相关主题