数据结构教程李春葆第9章(第4版)—课后答案
- 格式:pdf
- 大小:685.80 KB
- 文档页数:7
李春葆《数据结构教程》(第4版)笔记和课后习题详解第8章图8.1复习笔记一、图的基本概念1.图的定义图都是由顶点和边构成的。
采用形式化的定义,图G由两个集合V和E组成,记为G =(V,E),其中V是顶点的有限集合,记为V(G),E是连接V中两个不同顶点(顶点对)的边的有限集合,记为E(G)。
抽象数据类型图的定义如下:2.图的基本术语(1)端点和邻接点在一个无向图中,若存在一条边(i,j),则称顶点i和顶点j为该边的两个端点,并称它们互为邻接点,即顶点i是顶点j的一个邻接点,顶点j也是顶点i的一个邻接点。
(2)顶点的度、入度和出度①度在无向图中,某顶点所具有的边的数目称为该顶点的度。
②入度在有向图中,顶点i的度又分为入度和出度,以顶点i为终点的入边的数目,称为该顶点的入度。
③出度以顶点i为起点的出边的数目,称为该顶点的出度。
一个顶点的入度与出度的和为该顶点的度。
(3)完全图若无向图中每两个顶点之间都存在一条边,或有向图中每两个顶点之间都存在着方向相反的两条边,则称此图为完全图。
(4)稠密图和稀疏图①稠密图当一个图接近完全图时,称为稠密图。
②稀疏图当一个图含有较少的边数(即当e<<n(n-1))时,则称为稀疏图。
(5)子图设有两个图G=(V,E)和G′=(V′,E′),若V′是V的子集,即V′≤V,且E′是E的子集,即E′≤E,则称G′是G的子图。
(6)路径和路径长度①路径在一个图G=(V,E)中,从顶点i到顶点j的一条路径是一个顶点序列(i,i1,i2,…,i m),若此图G是无向图,则边(i,i1),(i1,i2),…,(i m-1,i m),(i m,j)属于E(G);若此图是有向图,N<i,i1>,<i1,i2>,…,<i m-1,i m>,<i m,j>属于E(G)。
②路径长度路径长度是指一条路径上经过的边的数目。
(7)回路或环若一条路径上的开始点与结束点为同一个顶点,则称此路径为回路或环。
第1章绪论知识点归纳一、数据结构概述1.数据结构的定义(1)基本概念数据是描述客观事物的数和字符的集合,是计算机能操作的对象的总称,也是计算机处理信息的某种特定的符号表示形式。
(2)相关术语① 数据元素数据元素又称元素、节点、顶点、记录等。
数据元素是数据的基本单位。
有时候,一个数据元素可以由若干个数据项组成。
② 数据项数据项又称字段或域,它是具有独立含义的最小数据单位。
③ 数据对象数据对象是性质相同的数据元素的集合,它是数据的子集。
(3)数据结构的内容① 数据元素之间的逻辑关系,即数据的逻辑结构,它是数据结构在用户面前呈现的形式。
② 数据元素及其关系在计算机存储器中的存储方式,即数据的存储结构,又称数据的物理结构。
③ 施加在数据上的操作,即数据的运算。
(4)逻辑结构数据的逻辑结构是从逻辑关系(主要是指数据元素的相邻关系)上描述数据的,它与数据的存储无关,是独立于计算机的。
因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
(5)存储结构数据的存储结构是逻辑结构用计算机语言的实现或在计算机中的表示(又称映像),也就是逻辑结构在计算机中的存储方式,它是依赖于计算机语言的。
一般只在高级语言(例如C/C++语言)的层次上讨论存储结构。
数据的运算最终需在对应的存储结构上用算法实现。
总之,数据结构是一门讨论“描述现实世界实体的数学模型(通常为非数值计算)及其之上的运算在计算机中如何表示和实现”的学科。
(6)数据结构的表示对于一种数据结构,其逻辑结构总是惟一的,但它可能对应多种存储结构,并且在不同的存储结构中,同一运算的实现过程可能不同。
描述数据结构通常采用二元组表示:B=(D,R)其中,B是一种数据结构,它由数据元素的集合D和D上二元关系的集合R组成,即:D={d i | 1≤i≤n,n≥0}R={r j | 1≤j≤m,m≥0}其中d i表示集合D中的第i个数据元素(或节点),n为D中数据元素的个数,特别地,若n=0,则D 是一个空集。
李春葆《数据结构教程》(第4版)笔记和课后习题详解第11章外排序11.1复习笔记一、外排序概述文件存储在外存上,因此外排序方法与各种外存设备的特征有关。
外排序的基本方法是归并排序法。
它分为以下两个步骤:1.生成若干初始归并段(顺串)将一个文件(含待排序的数据)中的数据分段读入内存,在内存中对其进行内排序,并将经过排序的数据段(有序段)写到多个外存文件上。
2.多路归并对这些初始归并段进行多遍归并,使得有序的归并段逐渐扩大,最后在外存上形成整个文件的单一归并段,也就完成了这个文件的外排序。
二、磁盘排序1.磁盘排序概述磁盘是直接存取设备,读/写一个数据块的时间与当前读/写头所处的位置关系不大,存放在磁盘中的文件的排序属典型的外排序。
磁盘排序过程如图11-1所示.图11-1磁盘排序过程磁盘中的F in文件包括待排序的数据,通过相关算法将F in文件中数据一部分一部分地调入内存(每个记录被读一次)处理,产生若干个文件F1~F n(每个记录被写一次),它们都是有序的,称为顺串。
然后再次将F1~F n文件中的记录调入内存(每个记录被读一次),通过相关归并算法产生一个有序的F out文件(每个记录被写一次),从而达到数据排序的目的。
可见,提高排序速度很重要的一个方面是减少对数据的扫描遍数。
2.生成初始归并段使用置换—选择的排序算法用于生成较长的初始归并段。
采用置换—选择排序算法生成初始归并段时,内排序基于选择排序,即从若干个记录中通过关键字比较选择一个最小的记录,同时在此过程中进行记录的输入和输出,最后生成若干个长度可能各不相同的有序文件。
基本步骤如下:(1)从待排序文件F in中按内存工作区WA的容量(设为w)读入w个记录,设归并段编号i=1;(2)从WA中选出关键字最小的记录R min;(3)将R min 记录输出到文件F i 中,作为当前归并段的一个成员;(4)若F in 不空,则从F in 中读入下一个记录到WA 中替代刚输出的记录;(5)从WA 工作区中所有大于或等于R min 的记录中选择出最小记录作为新的R min ,转(3),直到选不出这样的R min ;(6)置i=i+1,开始一个新的归并段;(7)若WA 工作区已空,则初始归并段已全部产生,否则转(2)。
数据结构基础及深入及考试复习资料习题及实验参考答案见附录结论1、数据的逻辑结构是指数据元素之间的逻辑关系.即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
2、数据的物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。
它依赖于计算机。
存储结构可分为4大类:顺序、链式、索引、散列3、抽象数据类型:由用户定义,用以表示应用问题的数据模型。
它由基本的数据类型构成,并包括一组相关的服务(或称操作)。
它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机).4、算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。
5、在数据结构中,从逻辑上可以把数据结构分成( C )A、动态结构和表态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构6、算法的时间复杂度取决于( A )A、问题的规模B、待处理数据的初态C、问题的规模和待处理数据的初态线性表1、线性表的存储结构包括顺序存储结构和链式存储结构两种.2、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为( E ),删除一个元素需要移动的元素的个数为( A )。
A、(n—1)/2B、nC、n+1D、n-1E、n/2F、(n+1)/2G、(n-2)/23、“线性表的逻辑顺序与存储顺序总是一致的."这个结论是( B )A、正确的B、错误的C、不一定,与具体的结构有关4、线性表采用链式存储结构时,要求内存中可用存储单元的地址( D )A、必须是连续的B、部分地址必须是连续的C一定是不连续的D连续或不连续都可以5、带头结点的单链表为空的判定条件是( B )A、head==NULLB、head—>next==NULLC、head->next=headD、head!=NULL6、不带头结点的单链表head为空的判定条件是( A )A、head==NULLB、head-〉next==NULLC、head—>next=headD、head!=NULL7、非空的循环单链表head的尾结点P满足( C )A、p—>next==NULLB、p==NULLC、p->next==headD、p==head8、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是( B )A、O(1)B、O(n)C、O(n2)D、O(nlog2n)9、在一个单链表中,若删除p所指结点的后继结点,则执行( A )A、p-〉next=p—〉next—>next;B、p=p—〉next;p-〉next=p—>next-〉next;C、p—〉next=p-〉next;D、p= p—>next->next;10、在一个单链表中,若在p所指结点之后插入s所指结点,则执行( B )A、s—>next=p;p-〉next=s;B、s—〉next=p—>next;p-〉next=s;C、s->next=p—〉next;p=s;D、p->next=s;s->next=p;11、在一个单链表中,已知q是p的前趋结点,若在q和p之间插入结点s,则执行( C )A、s—>next=p-〉next;p—>next=s;B、p->next=s—>next;s—〉next=p;C、q-〉next=s;s-〉next=p;D、p-〉next=s;s-〉next=q;12、在线性结构中,第一个结点没有前趋结点,其余每个结点有且只有 1 个前趋结点。
第二部分课后习题第1章绪论1.简述数据与数据元素的关系与区别。
答:凡是能被计算机存储、加工的对象统称为数据,数据是一个集合。
数据元素是数据的基本单位,是数据的个体。
数据与元素之间的关系是元素与集合之间的关系。
2.数据结构和数据类型有什么区别?答:数据结构是互相之间存在一种或多种特定关系的数据元素的集合,一般包括三个方面的内容,即数据的逻辑结构、存储结构和数据的运算。
而数据类型是一个值的集合和定义在这个集合上的一组运算的总称,如C语言中的int数据类型是由-32768~32767(16位机)的整数和+、-、*、/、%等运算符组成。
3.设3个表示算法频度的函数f、g和h分别为:f(n)=100n3+n2+1000g(n)=25n3+5000n2h(n)=n1.5+5000nlog2n求它们对应的时间复杂度。
答:f(n)=100n3+n2+1000=O(n3),g(n)=25n3+5000n2=O(n3),当n→∞时,√n>log2n,所以h(n)=n1.5+5000nlog2n=O(n1.5)。
4.用C/C++语言描述下列算法,并给出算法的时间复杂度。
(1)求一个n阶方阵的所有元素之和。
(2)对于输入的任意三个整数,将它们按从小到大的顺序输出。
(3)对于输入的任意n个整数,输出其中的最大和最小元素。
答:(1)算法如下:本算法的时间复杂度为O(n2)。
(2)算法如下:本算法的时间复杂度为O(1)。
(3)算法如下:本算法的时间复杂度为O(n)。
5.设n为正整数,给出下列各种算法关于n的时间复杂度。
(1)(2)(3)答:(1)设while循环语句执行次数为T(n),则:(2)算法中的基本运算语句是if(b[k]>b[j])k=j,其执行次数T(n)为:(3)设while循环语句执行次数为T(n),则:则6.有以下递归算法用于对数组a[i..j]的元素进行归并排序:求mergesort(a,0,n-1)的时间复杂度。
第二部分课后习题第1章绪论1.简述数据与数据元素的关系与区别。
答:凡是能被计算机存储、加工的对象统称为数据,数据是一个集合。
数据元素是数据的基本单位,是数据的个体。
数据与元素之间的关系是元素与集合之间的关系。
2.数据结构和数据类型有什么区别?答:数据结构是互相之间存在一种或多种特定关系的数据元素的集合,一般包括三个方面的内容,即数据的逻辑结构、存储结构和数据的运算。
而数据类型是一个值的集合和定义在这个集合上的一组运算的总称,如C语言中的int数据类型是由-32768~32767(16位机)的整数和+、-、*、/、%等运算符组成。
3.设3个表示算法频度的函数f、g和h分别为:f(n)=100n3+n2+1000g(n)=25n3+5000n2h(n)=n1.5+5000nlog2n求它们对应的时间复杂度。
答:f(n)=100n3+n2+1000=O(n3),g(n)=25n3+5000n2=O(n3),当n→∞时,√n>log2n,所以h(n)=n1.5+5000nlog2n= O(n1.5)。
4.用C/C++语言描述下列算法,并给出算法的时间复杂度。
(1)求一个n阶方阵的所有元素之和。
(2)对于输入的任意三个整数,将它们按从小到大的顺序输出。
(3)对于输入的任意n个整数,输出其中的最大和最小元素。
答:(1)算法如下:本算法的时间复杂度为O(n2)。
(2)算法如下:本算法的时间复杂度为O(1)。
(3)算法如下:本算法的时间复杂度为O(n)。
5.设n为正整数,给出下列各种算法关于n的时间复杂度。
(1)(2)(3)答:(1)设while循环语句执行次数为T(n),则:(2)算法中的基本运算语句是if(b[k]>b[j])k=j,其执行次数T(n)为:(3)设while循环语句执行次数为T(n),则:则6.有以下递归算法用于对数组a[i..j]的元素进行归并排序:求mergesort(a,0,n-1)的时间复杂度。
第10章内排序10.1 复习笔记一、排序的基本概念1.定义排序,就是整理表中的元素,使之按关键字递增或递减的顺序排列,本章仅讨论递增排序的情况。
其确切定义如下:输入:n个元素,R0,R1,…,R n-1,相应的关键字分别为k0,k1,…,k n-1。
输出:R i0,R i1,…,R in-1,使得k i0≤k i1≤…≤k in-1。
因此,排序算法就是要确定0,1,…,n-1的一种排列i0,i1,…,i n-1,使表中的元素依此排列整理后按关键字有序。
2.排序的稳定性(1)稳定如果待排序的表中,存在多个关键字相同的元素,经过排序后这些具有相同关键字的元素之间的相对次序保持不变,则称这种排序方法是稳定的。
(2)不稳定若具有相同关键字的元素之间的相对次序发生变化,则称这种排序方法是不稳定的。
注意:排序算法的稳定性是针对所有输入实例而言的。
在所有可能的输入实例中,只要有一个实例使得算法不满足稳定性要求,则该排序算法就是不稳定的。
3.内排序和外排序(1)内排序在排序过程中,若整个表都是放在内存中处理,排序时不涉及内、外存数据的交换,则称之为内排序。
内排序适用于元素个数不很多的小表。
(2)外排序若排序过程中要进行内、外存数据的交换,则称之为外排序。
外排序则适用于元素个数很多,不能一次将全部元素放入内存的大表。
内排序是外排序的基础。
(3)排序方法的其他分类①需要关键字比较的排序需要关键字比较的排序方法有插入排序、选择排序、交换排序和归并排序等。
②不需关键字比较的排序不需要关键字比较的排序方法有基数排序。
4.排序数据的组织在本章中,以顺序表作为排序数据的存储结构,假设关键字类型为整型。
待排序的顺序表中数据元素的类型定义如下:二、插入排序1.插入排序的思想及方法基本思想是:每次将一个待排序的元素,按其关键字大小插入到已经排好序的子表中的适当位置,直到全部元素插入完成为止。
主要有两种插入排序方法,即直接插入排序和希尔排序。