收藏 分享(赏)

数据结构期末复习资料.doc

上传人:精品资料 文档编号:10795110 上传时间:2020-01-10 格式:DOC 页数:18 大小:169.53KB
下载 相关 举报
数据结构期末复习资料.doc_第1页
第1页 / 共18页
数据结构期末复习资料.doc_第2页
第2页 / 共18页
数据结构期末复习资料.doc_第3页
第3页 / 共18页
数据结构期末复习资料.doc_第4页
第4页 / 共18页
数据结构期末复习资料.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、数据结构期末复习材料第一章1、数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。数据结构(Data Structure):相互之间存在一种或多种特定关系的数据元素的集合。2、数据结构的形式定义:二元组 Data_Structure=(D,S) 其中,D 是数据元素的有限集,S 是 D 上关系的有限集。3、数据元素之间关系的映像:、顺序映像(顺序存储结构 ):以相对的存储位置表示后继关系。2、非顺序映像(链式存储结构 ):借助指针元素存储地址的指针表示数据元素之间的逻辑关系。任何一个算法的设计取决于数据(逻辑) 结构,其实现取决于物理结构。4、 算法的

2、定义:对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。特性:有穷性、确定性、可行性、输入、输出5、 算法的评价衡量算法优劣的标准正确性(correctness): 满足具体问题的需求可读性(readability):易读、易理解健壮性(robustness):当输入数据非法时,算法能够做出反应或进行处理效率与低存储量:执行时间短、存储空间小第二章1、线性表是一种最简单的线性结构。线性结构 是一个数据元素的有序(次序)关系特点:存在唯一的一个“第一个”的数据元素;存在唯一的一个“最后一个”的数据元素;除第一个数据元素外,均有唯一的前驱;除最后一个数据元素外,均

3、有唯一的后继2、线性表类型的实现顺序映像 定义:用一组地址连续的存储单元依次存放线性表中的数据元素。以“存储位置相邻” 表示有序对,则有:LOC (ai) = LOC(ai-1) + l 其中 l 是一个数据元素所占存储量LOC(ai) = LOC(a1) + (i-1)l特点:1、实现逻辑上相邻物理地址相邻 2、实现随机存取 3、若假定在线性表中任何一个位置上进行插入的概率都是相等的,则移动元素的期望值为: 1)(niisE2n若假定在线性表中任何一个位置上进行删除的概率都是相等的,则移动元素的期望值为: nidlE1)(214、 线性表类型的实现链式映像 线性链表 特点:用一组地址任意的存

4、储单元存放线性表中的数据元素。5、在单链表中第 i 个结点之前进行插入的基本操作为:找到线性表中第 i-1 个结点,然后修改其指向后继的指针。s = (LinkList) malloc ( sizeof (LNode); / 生成新结点s-data = e; s-next = p-next; p-next = s; / 插入在单链表中删除第 i 个结点的基本操作为 :找到线性表中第 i-1 个结点,修改其指向后继的指针。q = p-next; p-next = q-next; e = q-data; free(q);5、 循环链表:最后一个结点的指针域的指针又指回第一个结点的链表。和单链表的差

5、别仅在于: 判别链表中最后一个结点的条件不再是“后继是否为空” ,而是“后继是否为头结点” 。6、 双向链表的操作特点:1、 “查询” 和单链表相同;2、 “插入” 和“删除”时需要同时修改两个方向上的指针“插入”:s-next = p-next; p-next = s; s-next-prior = s; s-prior = p;(s 是插入的结点)删除:p-next = p-next-next; p-next-prior = p;(要删除的是 p 的下一个结点)课后作业P13: 2.3、2.5P15: 2.8、2.9(2)第三章1、栈、队列的特点: 从数据元素间的逻辑关系看 是线性表 从操

6、作方式与种类看 不同于线性表:栈与队列是操作受限的线性表2、栈的基本概念 栈-是限制仅在线性表的一端进行插入和删除运算的线性表。栈顶(TOP)- 允许插入和删除的一端。栈底(bottom)-不允许插入和删除的一端。空栈-表中没有元素。栈-又称为后进先出的线性表3、 栈中元素的特性:1、具有线性关系 2、后进先出4、 栈的进栈出栈规则:a) 按序进栈:有 n 个元素 1,2,,n,它们按 1,2, , n 的次序进栈(i 进栈时,1(i-1)应该已经进栈);b) 栈顶出栈:栈底最后出栈;c) 时进时出:元素未完全进栈时,即可出栈。5、栈的表示与实现顺序栈 即栈的顺序存储结构:一组地址连续的存储单

7、元依次存放自栈底到栈顶的数据元素。1、 附设一个栈底指针 base,总是指向栈底。 2、 附设一个栈顶指针 top。空栈时, top=base;非空栈时,总是指向栈顶元素1 的位置。 插入一个栈顶元素,指针 top 增 1; 删除一个栈顶元素,指针 top 减 1; 非空栈中的栈顶指针始终在栈顶元素的下一个位置上链栈 :注意: 链栈中指针的方向指向 前驱结点!6、队列 队列:只允许在表的一端进行插入,而在表的另一端进行删除的线性表。 队尾(rear)允许插入的一端 队头(front)允许删除的一端 队列特点:先进先出(FIFO)7、队列类型的实现 链队列队列的链式表示和实现 顺序队列队列的顺序

8、表示和实现 用一组连续的存储单元依次存放队列中的元素8、顺序队列运算时的头、尾指针变化设两个指针 front,rear,约定:rear 指示队尾元素;front 指示队头元素前一位置初值 front=rear=0空队列条件:Q.front=Q.rear队列满:Q.rear-Q.front=m入队列: Q.baserear+=x;出队列:x=Q.base+front;存在问题:设数组维数为 M,则: 当 rear-front=m 时,再有元素入队发生溢出真溢出 当 rear 已指向队尾,但队列前端仍有空位置时,再有元素入队发生溢出假溢出!9、 循环队列:将数组首尾相接(即:base0连在 bas

9、em-1之后)。入/出队列运算利用“模运算” ,则: 入队:Q.rear=(Q.rear+1)%m 出队:Q.front=(Q.front+1)%m队满和队空判断条件:少用一个元素空间:队空:Q.rear=(Q.front)队满:(Q.rear+1)%m=Q.front10、 栈和队列是限定插入和删除只能在表的“端点”进行的线性表。a) 栈具有“后进先出” 的特性;b) 队列具有“先进先出” 的特性。11、 栈的链式存储不需头结点。课后作业1. 用栈结构计算中缀式 2+(4-3)*6,画出计算过程栈的结构。2. 简述以下算法的功能(栈和队列的元素类型均为 int)void algo3 (Que

10、ue int d;InitStack(S);while (!QueueEmpty(Q)DeQueue(Q, d); Push(S, d);while (!StackEmpty(S)Pop(S, d); EnQueue(Q, d);第四章一、1、串的基本概念 串- 由零个或多个字符组成的有限序列,一般记为:s= a1a2.an (n0) 串中字符的个数 n 称为串的长度;零个字符,即长度为零的串称为空串,用 或表示。空串不等于空格串,空格串:由一个或多个空格组成的串子串:串中任意个连续的字符组成的子序列主串:包含子串的串相应地称为主串相等:两个串的长度相等,并且对应位置的字符都相同。2、串结构与

11、线性表结构的比较:逻辑结构:极为相似,区别仅在于串的数据对象约束为字符集。基本操作:有很大差别 1、线性表大多以“单个元素”作为操作对象 2、串通常以“串的整体”作为操作对象3、串类型定义4、 串赋值 StrAssign、串复制 Strcopy、串比较 StrCompare、求串长 StrLength、串联接 Concat 以及求子串 SubString 等六种操作构成串类型的最小操作子集。 1、 StrAssign ( n+1 个指向子树的指针 Ai(0 i n);查找树的特性:非叶结点中的多个关键字均自小至大有序排列,即:K1 K2 Kn;且 Ai-1 所指子树上所有关键字均小于 Ki;

12、Ai 所指子树上所有关键字均大于 Ki;平衡树的特性:树中所有叶子结点均不带信息,且在树中的同一层次上;根结点或为叶子结点,或至少含有两棵子树(至少有一个关键字 );其余所有非叶结点均至少含有 m/2 棵子树,至多含有 m 棵子树;课堂练习1. 有一个长度为 12 的有序表 R011,按折半查找法对表进行查找,在表中各元素等概率情况下查找成功所需的平均比较次数为 。2. 有一个有序表为 1,3,9,12,32,41,45,62,75,77,82,95,99,当采用折半查找法查找关键字为 82 的元素时, 4 次比较后查找成功。构造判定树如下:3. 顺序查找含 n 个元素的顺序表,若查找成功,则

13、比较关键字的次数最多为 n 次;若查找不成功,则比较关键字的次数为 n+1 次。4. 如图所示的二叉排序树,其成功的平均查找长度是 ;不成功的平均查找长度是 。5. 一棵深度为 k 的平衡二叉树,其每个非叶子结点的平衡因子均为 0,则该树共有 个结点。由于每个非叶子结点的平衡因子均为 0,也即每个非终端结点都有左子树和右子树且高度相等;因此,这样的 AVL 树即为满二叉树,而高度为 h 的满二叉树的结点数为 2h-1。则本题答案为 2k-1。6.高度为 5(除叶子层之外)的三阶 B-树至少有 个结点。由 m 阶 B-树性质可知:根结点至少有两颗子树、根结点之外的所有非叶子结点至少有 m/2 棵

14、子树;则三阶 B-树的形状至少类似于一棵满二叉树,也即高度为 5 的三阶 B-树至少有 25-1=31 个结点。本题答案为 31。二、哈希表 这个是重点查找的过程为:给定值依次和关键字集合中各个关键字进行比较;查找的效率取决于和给定值进行比较的关键字个数建立关键字与记录在表中的存储位置之间的函数关系,以 f(key) 作为关键字为 key 的记录在表中的位置,通常称这个函数 f(key)为哈希函数。关键要素:哈希函数 H(key) 处理冲突的方法假设哈希表的地址集为 0 至(n-1) :冲突是指由关键字得到的哈希地址为 j 的位置上已存有记录。 “处理冲突”就是为该关键字的记录找到另一个“空”

15、 的哈希地址。 开放定址法:为产生冲突的地址 H(key) 求得一个地址序列 H0, H1, H2, , Hs 1 sm-1其中:H0 = H(key) Hi = ( H(key) + di ) MOD m, i=1, 2, , s 链地址法:将所有哈希地址相同的记录都链接在同一链表中。排序中的基本操作:比较关键字大小 和 移动记录不同的具体实现方法导致不同的算法描述:直接插入排序(基于顺序查找 ) 折半插入排序( 基于折半查找 ) 表插入排序( 基于链表存储) 希尔排序(基于逐趟缩小增量)1、直接插入排序 利用“顺序查找”实现“在 R1i-1中查找 Ri的插入位置”。 算法的实现要点:从 R

16、i-1起向前进行顺序查找,监视哨设置在 R0n 个元素需进行 n-1 趟排序。最好情况: 关键字在排序前已递增有序。“比较”的次数: “移动”的次数:0最坏情况: 关键字在排序前为递减有序。 “比较”的次数: “移动”的次数: 直接插入排序是一种稳定的排序方法2、折半插入排序因为 R1i-1 是一个按关键字有序的有序序列,则可以利用折半查找实现“在 R1i-1中查找 Ri的插入位置” ,如此实现的插入排序为折半插入排序。3、表插入排序 利用静态链表进行排序,并在排序完成之后,一次性地调整各个记录相互之间的位置,即将每个记录都调整到它们所应该在的位置上。4、希尔排序又称 缩小增量排序 (希尔排序

17、是一种不稳定的排序方法基本思想:对待排记录序列先作“宏观”调整,再作“ 微观” 调整。所谓“ 宏观”调整,指的是, “跳跃式”的插入排序。具体做法:将记录序列分成若干子序列,分别对每个子序列进行插入排序。5、交换排序起泡排序 基本思想: 注意:起泡排序的结束条件为,最后一趟没有进行“交换记录”;一般情况下,每经过一趟“起泡”, “i 减 1”,但并不是每趟都如此。时间性能分析:最好的情况(关键字在记录序列中 顺序有序) :只需进行一趟起泡。 “比较”的次数:n-1 “移动”的次数:012ni 2)1()(2nin4i 最坏的情况(关键字在记录序列中 逆序有序) :需进行 n-1 趟起泡。 “比

18、较”的次数: “移动”的次数: (每次移动记录 3 次) 起泡排序方法是稳定的。快速排序一趟快速排序(一次划分):目标:找一个记录,以它的关键字作为 “枢轴”,凡其关键字小于枢轴的记录均移动至该记录之前,反之,凡关键字大于枢轴的记录均移动至该记录之后快速排序是不稳定的排序方法。6、选择排序基本原理:将待排序的记录分为已排序(初始为空) 和未排序两组,依次将未排序的结点中值最小的结点插入已排序的组中。 简单选择排序和堆排序堆排序:堆排序只需要一个记录大小的辅助空间。堆排序分为两个步骤:根据初始输入,形成初始堆。建堆通过一系列的记录交换和重新调整进行排序。筛选如何“筛选”?“ 筛选”指的是,对一棵

19、左/右子树均为堆的完全二叉树, “调整”根结点使整个二叉树也成为一个堆。如何“建堆”?建堆是一个从下往上进行“ 筛选”的过程。 从最后一个非终端结点,即第 n/2 个元素开始“筛选”!堆排序的时间复杂度分析:对深度为 k 的堆, “筛选” 所需进行的关键字比较的次数至多为 2(k-1); 对 n 个关键字,建成深度为 h(=log2n+1)的堆,所需进行的关键字比较的次数至多 4n;堆排序的时间复杂度为 O(nlogn)。空间复杂性为 O(1)堆排序是不稳定的排序方法归并排序归并排序的过程基于下列基本思想进行: 将两个或两个以上的有序子序列合并为一个有序序列。各种排序方法的综合比较时间性能:平均的时间性能:时间复杂度为 O(nlogn):快速排序、堆排序和归并排序时间复杂度为 O(n2):直接插入排序、起泡排序和简单选择排序时间复杂度为 O(n): 基数排序基于“关键字间的比较” 进行排序的方法可以按排序过程所依据的不同原则分为:插入排序 交换排序 选择排序 归并排序 基数排序21(2nin)(3)(2in

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报