数据结构总复习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
24
3、动态查找表: 表结构本身是在查找过程中动态生成的,即对于给定值key, 若表中存在其关键字等于key 的元素,则查找成功返回, 否则插入关键字等于key的元素。 1) 二叉排序树 概念:一棵二叉树,且左子树上所有结点的值均小于根结 点的值;右子树上所有结点的值均大于根结点的值;左、 右子树本身又各是一棵二叉排序树。 性质:中序遍历二叉排序树可得到关键字的有序序列。 基本运算: ① 查找结点 ② 插入结点
25
③ 构造二叉排序树 方法:一棵空树bt,然后依次扫描所有元素,调用 BSTInsert()将其插入到bt中。
④删除结点 若待删除的结点是叶子结点,可直接删去该结点; 若待删除的结点只有左子树或只有右子树,可直接将其左 子树或右子树的根结点放在被删结点的位置; 若待删除的结点同时有左右子树,则在它的左子树中寻找 其中序序列的前驱结点,放在被删结点的位置上,将其原 来的左子树作为它原来双亲结点的右子树;或在它的右子 树中寻找其中序序列的后继结点,放在被删结点的位置上, 将其原来的右子树作为它原来双亲结点的左子树。
22
2) 折半查找 基本思想:前提是线性表中的元素必须按关键字值的递增 或递减顺序排列。用要查找的关键字k与中间位置的元素的 关键字相比较,这个中间元素把线性表分成了两个子表, 若比较结果相等则查找完成;若不相等,再根据k与该中间 的关键字比较确定下一步查找哪个子表,直到查找成功或 失败。 方法实现: low---指示查找区间的下界 high---指示查找区间的上界 mid = (low+high)/2 (整除取中间值)
18
3、图的遍历: 1) 深度优先搜索DFS 特点:类似于树的先根遍历,实质是对每个顶点查找其邻接 点的过程;其算法借助栈来实现。 2) 广度优先搜索BFS 特点:类似于树的层次遍历;其算法借助队列来实现。 [注意]:DFS与BFS对于无向图和有向图都适用;图的遍历 结构序列不是唯一的。
19
4、图的连通性: 1) 深度优先生成树、广度优先生成树、最小生成树 2) 生成最小生成树的算法: 普里姆(Prim)算法、克鲁斯卡尔(Kruskal)算法 最小生成树的特点: 最小生成树的边数是顶点数-1,即[E]=[V]-1; 最小生成树不可以有回路; 最小生成树不必是唯一的,但是权和一定是相同的。 最小生成树的应用: 最小代价生成树(通信网、公路网等)
27
动态平衡技术:
28
3) B-树 概念:一种平衡的多路查找树,一棵m阶的B-树 特点:m阶的B-树上所有非终端结点至多可有m-1个关键字。 基本运算: ① 查找 ② 插入结点:若该结点中关键字的个数不超过m-1,则插入 完成,否则要产生结点“分裂”。 ③ 删除结点 ④ B-树的生成:从空树起,逐个插入关键字而得到的。
26
特点: ① 在给定关键字序列后,根据其先后顺序建立相应的二叉 排序树,其结果是唯一的。 ② 如果删除的结点既有左子树,又有右子树,那么删除该 指定结点后得到的二叉排序树不唯一。
2) 平衡二叉树 概念:若一棵二叉树上任一结点的平衡因子的绝对值都不 大于1,则该树就是平衡二叉树。由于二叉排序树在插入结 点后被破坏了其平衡性,需要对它进行调整,使其达到一 种新的平衡。 最小不平衡子树:以离插入结点最近、且平衡因子绝对值 大于1的结点作根结点的子树。
7
第3章 栈和队列
1、栈和队列是操作受限的的线性表。 栈:在表尾进行插入/删除操作(LIFO); 队列:在队尾进行插入,队头进行删除(FIFO)。 2、栈的基本操作:进栈、出栈 队列的基本操作:入队、出队 3、栈的顺序存储结构:数组+指向栈顶的指针top 栈的链式存储结构:单链表,但只允许在表头插入/删除。 4、队列的顺序存储结构:数组+队头指针front+队尾指针rear 引出循环队列(为了解决“假溢出”)。 队列的链式存储结构:单链表,但只允许在表头进行删除,在 表尾进行插入。
数 据 结 构
总复习
内容提要
绪论
1 2 3
线性表
栈和队列 串 数组和广义表
2
4
5
6 7 9
树和二叉树

查找 内部排序
10
3
1、考试题型:选择、填空、判断、计算、程序填空、编程 2、考试方式:闭卷 3、考试时间:120分钟
4
第1章 绪论
1、基本概念: 数据、数据元素、数据类型、数据结构、逻辑结构、 存储结构(顺序、链式等)、线性结构、非线性结构 2、数据的逻辑结构: 集合、线性结构、树形结构和图形结构。 3、抽象数据类型ADT 4、算法效率的度量:时间复杂度T(n)、空间复杂度S(n) 一般来说,时间复杂度是总运算次数表达式中受n的变化 影响最大的那一项(不含系数)。
16
4、哈夫曼树与哈夫曼编码: 1) 哈夫曼树:带权路径长度最小的二叉树,又称为最优二 叉树。 2) 构造哈夫曼树的方法 特点:在合并中应选取根结点权值最小的两棵二叉树(包括 已合并的和未合并的)。 3) 哈夫曼编码:左分支赋0,右分支赋1。
17
第7章 图
1、术语: 图、有向图、无向图、 度、入度、出度、 无向完全图、有向完全图、 连通图、连通分量、强连通图、强连通分量、 生成树、权、网 2、图的存储结构 1) 数组表示法(邻接矩阵) 特点:无向图的邻接矩阵是对称矩阵;有向图的邻接矩阵 不一定对称。 2)邻接表 特点:一个图的邻接矩阵表示是唯一的,但其邻接表不是 唯一的。
11
百度文库
5、特殊矩阵的压缩存储:将有一定分布规律的元素压缩存储, 再按公式做映射来实现元素的随机存储。
1) n阶对称矩阵的压缩存储方法 只需存储对称矩阵的上三角或下三角中元素(含对角线上的元素), 使得对称的元素共享一个存储空间。因此,可将n2个元素就压 缩存储到n+(n-1)+…+2+1=n(n+1)/2个存储单元中。 若用一维数组S[0…n(n+1)/2-1]作为n阶对称矩阵A的存储结构, 则A中任一元素aij与S(k)之间存在如下对应关系: i(i+1)/2+j k = j(j+1)/2+i i<j
23
特点: ① 折半查找的过程构成一个判定树,把当前查找区间的中 间位置上的元素作为根,左子表和右子表的元素分别作为 根的左子树和右子树。 ② 折半查找只适用于有序表,且限于顺序存储结构。 3) 分块查找 基本思想:把线性表分成若干块,每一块中的元素存储顺 序是任意的,但块与块之间必须按关键字大小有序排列。 另外还要建立一个索引表,索引表中的一项对应线性表中 的一块。 方法实现:先确定待查找的元素属于哪一块,即查找其所 在的块;然后在块内进行查找。
4) B+树 概念:一种B-树的变形树
29
4、哈希表:
概念:哈希表、同义词 哈希表查找:构造哈希函数、建立解决冲突的方法 构造哈希函数:除留余数法 解决冲突的方法:开放定址法、链地址法
30
第10章 内部排序
1、排序、内部排序 2、内部排序的过程:是一个逐步扩大记录的有序序列长度 的过程。 3、 插入排序: 1) 直接插入排序 基本思想:将每个记录插入到一个有序的序列中去。 时间复杂度:O(n2)
2) 满二叉树、完全二叉树
3) 二叉树的存储结构:二叉链表、三叉链表、线索链表
4) 二叉树的遍历及算法:先序、中序、 后序、层次
5) 线索二叉树的遍历:二叉树的线索化
15
3、树和森林: 1) 树的存储结构
2) 树与二叉树的转换 3) 森林与二叉树的转换 4) 树的遍历:先根、后根、层次 特点:树的先根、后根遍历可借用二叉树的先序、中序遍 历实现。 5) 森林的遍历:先序、中序
32
时间复杂度:O(nlog2n) 特点:快速排序的待排序序列越有序越不好。此时,快速 排序将蜕化为冒泡排序,其时间复杂度为O(n2)。
5
第2章 线性表
1、线性表是一种最简单的线性结构。 2、线性表的数据类型定义和基本操作 基本操作:创建线性表、求线性表的长度、按值查找、插 入操作、删除操作等 3、线性表的顺序存储方式:数组 特点:可随机存取任一元素;但插入/删除等操作效率低。 4、线性表的链式存储方式: 特点:结点空间可动态申请和释放,数据插入/删除时无需 移动数据元素;但失去了随机存取的特性。
2) 希尔排序 基本思想:把记录按下标的一定增量d分组,对每组记录进 行直接插入排序。 时间复杂度:O(nlog2n)
31
4、 快速排序 1) 冒泡排序 基本思想:关键字较小的记录逐渐向上漂浮,关键字较大 的记录沉入水底。 时间复杂度:O(n2) 2) 快速排序 基本思想:将待排记录分割成独立的两部分,其中一部分 记录的关键字均比另一部分记录的关键字小,再分别对这 两部分记录继续进行排序。 方法实现:通常选取第一个记录作为枢轴,并设置指针low 和high的初始位置。凡比枢轴小的记录均移至枢轴之前; 反之,则移至枢轴之后。
6
1) 单链表 特点:单链表是一种顺序存取的结构,即线性链表的存取必 须从头指针开始,头指针指示链表中第一个结点的存储位置。 基本操作:生成单链表、获取某个元素、插入元素、删除元 素等 2) 循环链表 特点:表中最后一个结点的指针域指向头结点,整个链表形 成一个环。 3) 双向链表 特点:结点空间可动态申请和释放,数据插入/删除时无需 移动数据元素;但失去了随机存取的特性。
21
第9章 查找
1、查找、查找表分类、平均查找长度ASL 2、静态查找表: 1) 顺序查找 基本思想:从线性表的一端开始,顺序扫描线性表,依次 将扫描到的元素关键字和给定值k进行比较。若相等,则查 找成功;若扫描结束后,仍未找到关键字等于k的元素,则 查找失败。 特点:缺点是平均查找长度较大,查找效率低;但其优点 是算法简单且适应面广,对表结构无任何要求。
13
10、广义表:线性表的推广,其元素可以是单个数据元素, 也可以是一个广义表。 术语:广度、深度、表头、表尾 11、广义表的基本运算: 求广度、求深度、取头操作(Head)、取尾操作(Tail) 12、广义表的的链式存储结构:带头、尾指针的链表
14
第6章 树和二叉树
1、术语: 结点、度、叶子、孩子结点、双亲结点、兄弟结点、层数、 树的深度、森林等 2、二叉树: 1) 二叉树的定义和性质
10
第5章 数组和广义表
1、数组:一旦被定义,它的维数和维界就不再改变。 2、数组的基本操作: 存取元素、修改元素值、计算数组元素地址 3、数组的顺序存储结构:按行或列优先顺序存储 当A[m][n]按行优先存储时,元素ai,j的地址计算为(设每个单 元占k个地址单元):LOC(ai,j)=LOC(a0,0)+ (i*n+j)*k 当A[m][n]按列优先存储时,元素ai,j的地址计算为(设每个单 元占k个地址单元):LOC(ai,j)=LOC(a0,0)+ (j*m+i)*k 4、数组的链式存储结构:带行指针向量的单链表
20
5、有向无环图: 1) 拓扑排序(AOV网):求拓扑有序序列
2) 关键路径(AOE网):求关键路径和关键活动 关键路径的特点: 关键路径上的所有活动都是关键活动,提前完成非关键活 动并不能加快工程的进度。 关键路径不一定只有一条。 只有在不改变网的关键路径的情况下,提高关键活动的速 度才有效。若网中有几条关键路径,则必须同时提高几条 关键路径的活动速度才能缩短整个工程。 6、最短路径: 从某个源点到其它各顶点的最短路径:Dijkstra算法
8
5、栈的应用:数制转换、括号匹配检验、表达式求值等。 6、队列的应用:银行办理业务、打印机缓冲等。
9
第4章 串
1、串=字符串 特殊性:将“串的整体”作为操作对象。 术语:串长、空白串、空串、子串、串相等 2、串的基本操作: 串链接、取子串、删除子串、求子串位置 3、串的顺序存储结构: 针对一般长度的字符串:数组 针对超长字符串:堆(动态分配的数组) 4、串的链式存储结构:不带头结点的单链表 5、串的模式匹配算法:BF算法、KMP算法
12
i≥j
2) 三角矩阵的压缩存储方法 3) 对角矩阵的压缩存储方法 6、稀疏矩阵的压缩存储:用三元组表记录每个元素的行下标、 列下标和元素值,再加一行总体信息(总行数、总列数、总元素 个数)。 7、稀疏矩阵的基本运算:矩阵转置、压缩转置、快速压缩转 置 8、稀疏矩阵的顺序存储结构:三元组顺序表 9、稀疏矩阵的链式存储结构:十字链表
相关文档
最新文档