吉林大学内部绝密资料-数据结构总复习
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图的基本操作
•
•
•
遍历
深度优先遍历
广度优先遍历
基于图的算法
•
拓扑排序
•
• •
关键路径
最短路径(Dijkstra算法) 最小支撑树(Prim、Kruskar算法)
排序
排序:将一组杂乱无章的数据按一定的规律顺 次排列起来。 插入排序 交换排序 选择排序 合并排序
各种内部排序方法的比较
逻辑结构表示为二元组 L=(N, R),其中N(L) 是结点的有限集合, R(L)是N上的关系集合。
逻辑结构的分类
线性结构
–
结构中有且仅有一个始结点和一个终结点, 始结点只有一个后继结点,终结点只有一个 前趋结点,每个内结点有且仅有一个前趋结 点和一个后继结点。 结构中的结点可能有多个前趋结点和多个后 继结点
时间复杂性
度量算法的标准: (1)能告诉算法所采用的方法的时间效率; (2)与算法描述语言及设计风格无关; (3)与算法的许多细节无关; (4)足够精确和具有一般性。 基本运算(关键操作) 对所研究问题的基本操作 时间复杂性 一个算法的时间复杂性是指该算法的基本运算次数。
数据结构
逻辑结构 存储结构 操作
排序方法 最好时间 平均时间 最坏时间 辅助空间 稳定性
直接插入 O(n) O(n2) O(n2) O(1) 稳定
直接选择
冒泡
O(n2)
O(n)
O(n2)
O(n2)
O(n2)
O(n2)
O(1)
O(1)
不稳定
稳定
希尔
快速
O(n1.25)
O(nlog2n)O(nlog2n) O(n2)
O(1)
不稳定
O(log2n) 不稳定
常用数据结构
树
–
树是由唯一的起始结点“根结点”( r o o t)出发的 结点集合,其中,任何非根结点都有且仅有一个前 趋结点,称之为该结点的父结点;任何结点都可能 有多个后继结点,称之为该结点的子结点;若某结 点没有后继结点,则称之为叶子结点。若存在路径, 其中是的后继结点,则称为的子孙结点,称为的祖 先结点,该路径所经历的边的个数被称为路径的长 度。一个结点到它的某个子孙结点有且仅有一条路 径。
图
图(Graph)是一种较线性表和树更为复杂的 非线性结构。在图结构中,对结点(图中常称 为顶点)的前趋和后继个数都是不加限制的, 即结点之间的关系是任意的。图中任意两个结 点之间都可能相关。图状结构可以描述各种复 杂的数据对象。
图的存储结构
邻接矩阵 邻接表
(Adjacency List)
2· 链式存储结构 二叉树诸结点被随机存放在内存空间中,结点 之间的关系用指针说明。(线索树)
基本操作
二叉树的遍历:按照一定次序访问树中所有结 点,并且每个结点的值仅被访问一次的过程。 先根(中根、后根)遍历次序是树中结点的一 个有序序列,称为二叉树的先根(中根、后根) 序列。
构造哈夫曼树
哈夫曼算法基本思想: ① 根据给定的n个权值w1 , w2 , … ,wn构成n棵二叉树的 森林F={T1 ,T2 , … ,Tn },其中每棵二叉树Ti中都只有一 个权值为wi的根结点,其左、右子树均空; ② 在森林F中选出两棵根结点权值最小的树作为一棵新 树的左、右子树,且置新树的根结点的权值为其左、 右子树上根结点的权值之和; ③ 从F中删除构成新树的那两棵树,同时把新树加入F 中; ④重复第②和第③步,直到F中只含有一棵树为止,此 树便是哈夫曼树。
非线性结构(树、图)
–
数据的存储结构
数据在计算机中的存储表示
称为数据的存储结构。
– 顺序存储结构
– 链接存储结构
数据需要施加的操作
数据处理是指对数据进行查找、插入、删 除、合并、排序、统计以及简单计算等的 操作过程。
– – –
线性表 树 图
算法描述语言 —— ADL
ADL 的格式 算法<标识符>(变量i1,…,变量im.变量j1,…,变量jn) //单行注释(或/*…*/多行注释) 步骤名1 [步骤1所执行操作的高度概括] 语句序列. … 步骤名n [步骤n所执行操作的高度概括] 语句序列.
顺序存储结构
链接存储结构
– 单链表
– –
循环链表 双向循环链表
栈 和 队 列(线性表的应用)
掌握栈的逻辑结构特点。 掌握顺序栈和链栈上实现的进栈、退栈等基本 算法。 掌握队列的逻辑结构特点。 掌握顺序队列(主要是循环队列)和链队列上 实现的入队、出队等基本算法。
栈 和 队 列(线性表的应用)
线 性 结 构
树 型 结 构
图 状 结 构
集
顺序 存储 结构
链式 存储 结构
合
二、常用数据结构 线性表
树
图
线性表
掌握线性表的定义和逻辑结构,了解线性表的基本运算。 掌握顺序表的插入和删除操作及平均时间性能分析。
熟练掌握单链表查找、插入和删除操作并分析其时间复杂度。
了解循环单链表算法和单链表上相应算法的异同点。 熟练利用单链表设计算法解决简单的应用问题。
堆
归并
O(nlog2n)O(nlog2n)O(nlog2n)
O(nlog2n)O(nlog2n)O(nlog2n)
O(1)
O(n)
不稳定
稳定
查找
线性表查找
– 顺序查找
– 有序表的查找
– 二叉查找(搜索)树
杂凑
–杂凑函数
抽取法 压缩法 除法杂凑函数 乘法杂凑函数
冲突调节 – 拉链法 – 线性探查 – 双重杂凑
栈和队列都是操作受限的线性表
栈的定义:栈是插入和删除只能在其一端进行的线性表。 并按先进后出( F I L O )或后进先出(LIFO) 的原则进行操作。 队列的定义:队列是插入在一端进行而删除在其另一端 进行的线性表。并按先进向出(FIFO)的原则进行操 作。能进行删除的一端称为队首(front),能进行 插入操作的一端称为队尾(rear)。
掌握双链表的基本操作。
掌握顺序表和链表的主要优缺点
线性表
线性表定义:一个线性表是由零个或多个 具有相同类型的结点组成的有序集合。 用(a0,a1,…,an-1)来表示一个线性 表。当n>0时,a0称为表的始结点,an-1 称为表的终结点,当n=0时,线性表中 有零个结点,称为空表。
线性表的存储结构
数据结构
总复习
教学内容
第一章 第二章 第三章 第六章 第四章 第五章 第七章 第八章
绪论 线性表、堆栈和队列 数组和字符串 递归 树 图 排序 查找
基础知识
线性结构 基础知识 非线性结构 非线性结构
重点内容
三三两两 三要素(逻辑结构、存储结构、操作) 三个数据结构(线性表、树、图) 两类算法(排序、查找) 两个评价算法的主要标准(时间、空间复杂性) 两个表(3×3,2×2)
栈的应用——算术表达式求值
运算规则: (1) 先计算括号内,后计算括号外; (2) 在无括号或同层括号内,先进行乘除运算, 后进行加减运算,即乘除运算的优先级高于加 减运算的优先级; (3) 同一优先级运算,从左向右依次进行。
数组、字符串和集合(线性结构)
掌握一维、二维数组的存储方法及对任意元素 求地址公式 掌握稀疏矩阵的概念及存储方法 掌握串的有关概念及基本算法。 了解串的两种存储表示。 了解模式匹配算法
图
掌握图的常用术语及含义。 掌握图的深度优先搜索和广度优先搜索两种遍 历算法及执行过程。 熟练掌握确定两种遍历所得到的顶点访问序列。
图
要求对给定的连通图,根据Prim和Kruskar算 法构造最小生成树。 对于给定的有向图,根据Dijkstra算法能画出 求单源最短路径的过程示意图。 对于给定的有向图,若拓扑序列存在,则要求 写出一个或多个拓扑序列。 对于给定的有向图,能求出其关键路径等。
树
掌握树的常用术语及含义。 掌握二叉树的递归定义及树与二叉树的差别。 熟练掌握二叉树的性质。 掌握二叉树的两种存储方法。 熟练掌握二叉树的四种遍历算法。 熟练掌握确定四种遍历所得到的相应的结点访 问序列。
树
熟练掌握以二叉树遍历算法为基础,设计有关算法解 决简单的应用问题。 掌握树的存储方法并设计有关算法解决简单的应用问 题。 掌握线索二叉树的概念及存储方法并能将一棵二叉树 线索化。 熟练掌握树和森林与二叉树之间的转换方法。 熟练掌握根据给定的叶结点及其权值构造出哈夫曼树。
– 包括:数据、数据元素、数据项、数据结构等基本
概念。
算法和算法分析
– 掌握算法、算法的时间复杂度和空间复杂度等概念
掌握算法分析的方法,对一般算法能分析出时间复 杂度。
一、基础知识
数据:计算机程序要处理的“原料” 数据元素:是组成数据的基本单位。在程序中 通常把结点作为一个整体进行考虑和处理。 数据项:每个数ห้องสมุดไป่ตู้元素都有学号、姓名这两个 数据项构成。数据项是构成数据的最小单位。
二叉树 (Binary Tree)
二叉树是结点的有限集合,它必须满足 下面的一个条件: (1)它是空集。 (2)它由一个根结点,根结点的左右子树 构成,且其左右子树满足二叉树定义。
树的储结构
1· 顺序存储结构
完全二叉树的顺序存储:按层次次序给结点编号,使 用一维数组A来存放。A[0]存储二叉树的根结点,A[i] 结点的左孩子结点存放在[2i+1]处,而A[i]的右孩子 结点存放在A[2i+2]处
一、基础知识
数据结构的定义:
1.
2. 3.
按某种逻辑关系将一批数据元素组织起 来 按一定的存储方式把它们存储起来; 在数据上定义需要施加的操作。
一、基础知识 数据结构的组成:
– 数据的逻辑结构
– 数据的存储结构 – 数据需要施加的操作
逻辑结构
数据元素之间的逻辑关系称为数据
的逻辑结构。 逻辑结构的形式化表示
3×3(2、3、4、5章)
线性表 逻辑结构 存储结构 操作 树 图
2×2(7、8章)
时间复杂性 空间复杂性
排序
插入、交换、 选择、合并…
查找
有序表的查找 杂凑…
重点内容
3+2
–
三类数据结构
线性表 树 图
排序 查找
–
两类算法
教学内容
基础知识
–
第一章
绪论
一、基础知识
掌握数据结构的基本概念和术语