数据结构教程李春葆第8章(第4版)—课后答案

合集下载

李春葆《数据结构教程》(第4版)模拟试题及详解(一)(圣才出品)

李春葆《数据结构教程》(第4版)模拟试题及详解(一)(圣才出品)

第四部分模拟试题李春葆《数据结构教程》(第4版)模拟试题及详解(一)一、单项选择题(每小题2分,共20分)1.队列的特点是()。

A.先进后出B.先进先出C.任意位置进出D.前面都不正确【答案】B2.有n个记录的文件,如关键字位数为d,基数为r,则基数排序共要进行()遍分配与收集。

A.nB.dC.rD.n-d【答案】B【解析】基数排序是按组成关键字的各位值进行分配收集而完成的。

3.在二叉树节点的先序序列、中序序列和后序序列中,所有叶子节点的先后顺序()。

A.都不相同B.完全相同C.先序和中序相同,而与后序不同D.中序和后序相同,而与先序不同【答案】B【解析】无论是哪种遍历方式,遍历叶子节点时,都是先访问左子树,后访问右子树。

4.限定在一端加入和删除元素的线性表称为()。

A.双向链表B.单向链表C.栈D.队列【答案】C【解析】根据栈后进先出的特性,可见栈都在一端对元素进行操作。

5.设内存工作区可容纳8个记录,初始文件共有64个关键字不同的记录,且已按关键字递减排列,如用置换.选择排序产生初始归并段,最长初始归并段所含记录数是()。

A.6B.7C.8D.9【答案】C【解析】对于置换选择排序,输入的文件是以关键字降序排列时,所得的初始归并段的最大长度为工作区的大小。

当输入的文件以关键字的升序排序时,只能得到一个长度为文件长度的初始归并段。

6.设森林F对应的二叉树为B,它有m个节点,B的根为p,p的右子树上的节点个数为n,森林F中第一棵树的节点个数是()。

A.m-n-1B.n+lC.m-n+1D.m-n【答案】D7.设有198个初始归并段,如采用K-路平衡归并三遍完成排序,则K值最大为()。

A.12B.13C.14D.15【答案】C【解析】k一路平衡归并,归并趟数公式s=[1og k m],m指归并段数,s指趟数。

要三遍完成遍历,那就看两遍完成排序的需遍历的最小数。

把s=2和m=198带入公式,可知两遍完成排序时k最小为15,所以k<15。

李春葆《数据结构教程》(第4版)笔记和课后习题详解(第8~10章)【圣才出品】

李春葆《数据结构教程》(第4版)笔记和课后习题详解(第8~10章)【圣才出品】

李春葆《数据结构教程》(第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)回路或环若一条路径上的开始点与结束点为同一个顶点,则称此路径为回路或环。

数据结构教程李春葆第4版知识点习题答案

数据结构教程李春葆第4版知识点习题答案

第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版)笔记和课后习题详解(线性表)【圣才出品】

李春葆《数据结构教程》(第4版)笔记和课后习题详解(线性表)【圣才出品】

第2章线性表2.1 复习笔记一、线性表及其逻辑结构1.线性表的定义线性表是具有相同特性的数据元素的一个有限序列。

该序列中所含元素的个数叫做线性表的长度,用n表示,n≥0。

当n=0时,表示线性表是一个空表,即表中不包含任何元素。

2.线性表的表示设序列中第i(i表示逻辑序号)个元素为a i(1≤i≤n),则线性表的一般表示为:(a1,a2,…,a i,a i+1,…,a n)其中a1为第一个元素,又称做表头元素,a2为第二个元素,…,a n为最后一个元素,又称做表尾元素。

一个线性表可以用一个标识符来命名,如用L命名上面的线性表,则:L=(a1,a2,…,a i,a i+1,…,a n)线性表中的元素是与位置有关的,即第i个元素a i处在第i-1个元素a i-1的后面和第i+1个元素a i+1的前面。

这种位置上的有序性就是一种线性关系,所以线性表是一种线性结构,用二元组表示为:L=(D,R),其中:对应的逻辑结构如图2-1所示。

图2-1 线性表的逻辑结构示意图3.线性表的抽象数据类型描述抽象数据类型线性表的定义如下:二、线性表的顺序存储结构1.顺序表(1)线性表的存储结构线性表的顺序存储结构是把线性表中的所有元素按照其逻辑顺序依次存储到从计算机存储器中指定存储位置开始的一块连续的存储空间中,如图2-2所示。

图2-2 线性表到顺序表的映射由于线性表中逻辑上相邻的两个元素在对应的顺序表中的存储位置也相邻,所以这种映射称为直接映射。

这样,线性表中第一个元素的存储位置就是指定的存储位置,第i+1个元素(1≤i≤n-1)的存储位置紧接在第i个元素的存储位置的后面。

假定线性表的元素类型为ElemType,则每个元素所占用存储空间大小(即字节数)为sizeof(ElemType),整个线性表所占用存储空间的大小为n×sizeof(ElemType),其中n表示线性表的长度。

在C/C++语言中,线性表的顺序存储结构是利用数组来实现的,数组的基本类型就是线性表中元素的类型,数组的大小要大于等于线性表的长度。

李春葆《数据结构教程》(第4版)课后习题-串(圣才出品)

李春葆《数据结构教程》(第4版)课后习题-串(圣才出品)

第4章串1.采用顺序结构存储串,编写一个实现串通配符匹配的算法pattern______index(),其中的通配符只有“?”,它可以和任一字符匹配成功,例如,pattern______index(″? re″,″there are″)返回的结果是2。

答:本题的基础是Brute—Force模式匹配算法,只是增加了“?”的处理功能。

对应的算法如下:2.有两个串s1和s2,设计一个算法求这样一个串,该串中的字符是s1和s2中的公共字符。

答:扫描s1,对于当前字符s1.data[i],若在s2中,则将其加入到串s3中。

最后返回s3串。

对应的算法如下:3.设目标为t=’abcaabbabcabaacbacba’,模式p=’abcabaa’。

(1)计算模式P的nextval函数值。

(2)不写算法,只画出利用KMP算法进行模式匹配时的每一趟匹配过程。

答:(1)先计算next数组,在此基础上求nextval数组,如表4-1所示。

表4-1 计算next数组和nextval数组(2)采用KMP算法求子串位置的过程如下(开始时i=0,j=0):第1趟匹配:此时i=4,j=4,匹配失败,而nextval[4]=0,则i=4,j=nextval[4]=0,即:第2趟匹配:此时i=6,j=2,匹配失败,而nextval[2]=0,则i=6,j=nextval[2]=0,即:第3趟匹配:此时i=6,j=0,匹配失败,而nextval[0]=-1,则i=6,j=nextval[0]=-1。

因j=-1,执行i=i+1=7,j=j+1=0,即:第4趟匹配:此时i=14,j=7,匹配成功,返回v=i-t.1ength=14-7=7。

上机实验题4实验题1编写一个程序algo4-1.cpp,实现顺序串的各种基本运算,并在此基础上设计一个程序exp4-1.cpp完成如下功能:(1)建立串s=″abcdefghefghijklmn″和串sl=″xyz″;(2)输出串s;(3)输出串s的长度;(4)在串s的第9个字符位置插入串s1而产生串s2;(5)输出串s2;(6)删除串s第2个字符开始的5个字符而产生串s2;(7)输出串s2;(8)将串s第2个字符开始的5个字符替换成串s1而产生串s2;(9)输出串s2;(10)提取串s的第2个字符开始的10个字符而产生串s3;(11)输出串s3;(12)将串s1和串s2连接起来而产生串s4;(13)输出串s4。

李春葆《数据结构教程》(第4版)课后习题-第一章至第十二章(圣才出品)

李春葆《数据结构教程》(第4版)课后习题-第一章至第十二章(圣才出品)

第二部分课后习题第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)的时间复杂度。

李春葆《数据结构教程》(第4版)课后习题-绪论(圣才出品)

李春葆《数据结构教程》(第4版)课后习题-绪论(圣才出品)

第二部分课后习题第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)的时间复杂度。

数据结构教程李春葆课后答案第8章图

数据结构教程李春葆课后答案第8章图

3
3
3
3 5 3
图 8.10 图 G
图 8.11 图 G 中的关键路径
14. 假设不带权有向图采用邻接矩阵 g 存储,设计实现以下功能的算法: (1)求出图中每个顶点的入度。 (2)求出图中每个顶点的出度。 (3)求出图中出度为0的顶点数。 解:利用邻接矩阵的特点和相关概念得到如下算法:
????????????????????????????????????????????0303034050640a图89邻接矩阵a10234545643331023454564333图810图g图811图g中的关键路径14
第8章 图
教材中练习题及参考答案
1. 图G是一个非连通图,共有28条边,则该图至少有多少个顶点? 答:由于G是一个非连通图,在边数固定时,顶点数最少的情况是该图由两个连通分 量构成,且其中之一只含一个顶点(没有边),另一个为完全无向图。设该完全无向图的 顶点数为n, 其边数为n(n-1)/2,即n(n-1)/2=28,得n=8。所以,这样的非连通图至少有1+8=9 个顶点。 2. 有一个如图 8.2(a)所示的有向图,给出其所有的强连通分量。 答:图中顶点0、1、2构成一个环,这个环一定是某个强连通分量的一部分。再考察顶 点3、4,它们到这个环中的顶点都有双向路径,所以将顶点3、4加入。考察顶点5、6,它 们各自构成一个强连通分量。该有向图的强连通分量有3个,如图8.2(b)所示。
2
数据结构教程学习指导
接表表示的有向图,图中的边数等于边结点的个数。 (2)对于邻接矩阵g表示的无向图,邻接矩阵数组元素g.edges[i][j]为1表示它们有边相 连,否则为无边相连。对于邻接矩阵g表示的有向图,邻接矩阵数组元素g.edges[i][j]为1表 示从顶点i到顶点j有边,g.edges[j][i]为1表示从顶点j到顶点i有边。 对于邻接表G表示的无向图,若从头结点G->adjlist[i]的单链表中找到编号为j的边表结 点,表示它们有边相连;否则为无边相连。对于邻接表 G 表示的有向图,若从头结点 G->adjlist[i] 的单链表中找到编号为 j的边表结点,表示从顶点 i到顶点 j有边。若从头结点 G->adjlist[j]的单链表中找到编号为i的边表结点,表示从顶点j到顶点i有边。 (3)对于邻接矩阵表示的无向图,顶点i的度等于第i行中元素为1的个数;对于邻接矩 阵表示的有向图,顶点i的出度等于第i行中元素为1的个数,入度等于第i列中元素为1的个 数,顶点i度等于它们之和。 对于邻接表G表示的无向图,顶点i的度等于G->adjlist[i]为头结点的单链表中边表结点 个数。 对于邻接表G表示的有向图,顶点i的出度等于G->adjlist[i]为头结点的单链表中边表结 点的个数;入度需要遍历所有的边结点,若G->adjlist[j]为头结点的单链表中存在编号为 i 的边结点,则顶点i的入度增1,顶点i的度等于入度和出度之和。 5. 对于如图 8.3 所示的一个无向图 G,给出以顶点 0 作为初始点的所有的深度优先遍 历序列和广度优先遍历序列。

李春葆《数据结构教程》(第4版)笔记和课后习题详解(内排序)【圣才出品】

李春葆《数据结构教程》(第4版)笔记和课后习题详解(内排序)【圣才出品】

第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.插入排序的思想及方法基本思想是:每次将一个待排序的元素,按其关键字大小插入到已经排好序的子表中的适当位置,直到全部元素插入完成为止。

主要有两种插入排序方法,即直接插入排序和希尔排序。

数据结构教程李春葆课后答案 图

数据结构教程李春葆课后答案 图
(3)对于邻接矩阵表示的无向图,顶点i的度等于第i行中元素为1的个数;对于邻接矩 阵表示的有向图,顶点i的出度等于第i行中元素为1的个数,入度等于第i列中元素为1的个 数,顶点i度等于它们之和。
对于邻接表G表示的无向图,顶点i的度等于G->adjlist[i]为头结点的单链表中边表结点 个数。
对于邻接表G表示的有向图,顶点i的出度等于G->adjlist[i]为头结点的单链表中边表结 点的个数;入度需要遍历所有的边结点,若G->adjlist[j]为头结点的单链表中存在编号为i 的边结点,则顶点i的入度增1,顶点i的度等于入度和出度之和。
4
数据结构教程学习指导
中。因为在采用Kruskal算法构造最小生成树时,选择这3条权最小的边加入时,有可能出 现回路。例如,如图8.5所示的带权无向图,有3条边的权均为1,它们一定不会同时都出现 在其任何最小生成树中。
1 1
1 0
1
3
3 2
图 8.5 一个带权无向图
8. 对于如图8.6所示的带权有向图,采用Dijkstra算法求出从顶点0到其他各顶点的最短 路径及其长度,要求给出求解过程。
0
0
1
2
4
5
1
2
4
5
6
3
6
(a) 一个有向图
3 (b) 3 个强连通分量
图 8.2 一个有向图及其强连通分量
3. 对于稠密图和稀疏图,采用邻接矩阵和邻接表哪个更好些? 答:邻接矩阵适合于稠密图,因为邻接矩阵占用的存储空间与边数无关。邻接表适合 于稀疏图,因为邻接表占用的存储空间与边数有关。
4. 对 n 个顶点的无向图和有向图(均为不带权图),采用邻接矩阵和邻接表表示时, 如何求解以下问题:

李春葆数据结构教程第4版习题答案

李春葆数据结构教程第4版习题答案

1章答案1.简述数据与数据元素的关系与区别。

解:凡是能被计算机存储、加工的对象统称为数据,数据是一个集合。

数据元素是数据的基本单位,是数据的个体。

数据与元素之间的关系是元素与集合之间的关系。

2.数据结构和数据类型有什么区别?解:数据结构是互相之间存在一种或多种特定关系的数据元素的集合,一般包括三个方面的内容,即数据的逻辑结构、存储结构和数据的运算。

而数据类型是一个值的集合和定义在这个集合上的一组运算的总称,如C语言中的int数据类型是由-32768~32767(16位机)的整数和+、-、*、/、%等运算符组成。

3.设3个表示算法频度的函数f、g和h分别为:f(n)=100n3+n2+1000 g(n)=25n3+5000n2 h(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.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

3.简述逻辑结构的四种基本关系并画出它们的关系图。

4.存储结构由哪两种基本的存储方法实现?5.选择题(1)在数据结构中,从逻辑上可以把数据结构分成()。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。

A.存储结构B.存储实现C.逻辑结构D.运算实现(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。

A.数据具有同一特点B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致C.每个数据元素都一样D.数据元素所包含的数据项的个数要相等(4)以下说法正确的是()。

A.数据元素是数据的最小单位B.数据项是数据的基本单位C.数据结构是带有结构的各数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构(5)以下与数据的存储结构无关的术语是()。

A.顺序队列 B. 链表 C. 有序表 D. 链栈(6)以下数据结构中,()是非线性数据结构A.树B.字符串C.队D.栈6.试分析下面各程序段的时间复杂度。

(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。

李春葆《数据结构教程》(C++语言描述)配套题库【课后习题】(查 找)

李春葆《数据结构教程》(C++语言描述)配套题库【课后习题】(查  找)
(9)含有 20 个结点的 AVL 树的最小高度是______。 A.4 B.5 C.6 D.7
4 / 14
圣才电子书

【答案】B
十万种考研考证电子书、题库视频学习平台
【解析】与(8)同理可知答案为 B 项。
(10)在一棵 rn-阶 B 树中,有 k 个孩子结点的非叶子结点恰好包含______关键字。 A.k+1 B.k C.k-1 D.m/2 【答案】C 【解析】按照 B-树的定义可知,有 k 个孩子结点的非叶子节点应该有 k-1 个关键字, 答案为 C 项。
大高度应为 log2 (2047 1) 1 12 ,答案为 B 项。
(13)在以下查找方法中,查找效率与记录个数 n 无直接关系的是______。 A.顺序查找 B.折半查找 C.哈希查找 D.二叉排序树查找 【答案】C 【解析】哈希查找时的平均查找长度不是元素个数 n 的函数,而是装填因子 a 的函数。 因此答案应为 C 项。
(2)在对线性表进行折半查找时,要求线性表必须______。 A.以顺序方式存储 B.以链接方式存储 C.以顺序方式存储,且结点按关键字有序排序 D.以链表方式存储,且结点按关键字有序排序 【答案】C 【解析】对线性表进行折半查找时要求线性表必须以顺序方式存储,且结点按关键字有
1 / 14
圣才电子书 十万种考研考证电子书、题库视频学习平台
(7)一棵二叉排序树是由关键字集合{18,43,27,44,36,39}构建的,其中序遍 历序列是______。
3 / 14
圣才电子书 十万种考研考证电子书、题库视频学习平台

A.树形未定,无法确定 B.18,43,27,77,44,36,39 C.18,27,36,39,43,44,77 D.77,44,43,39,36,27,18 【答案】C 【解析】二叉排序树的中序遍历即为有序递增序列,因此答案应为 C 项。

李春葆《数据结构教程》(第4版)课后习题-递归(圣才出品)

李春葆《数据结构教程》(第4版)课后习题-递归(圣才出品)

第5章递归1.有以下递归函数:分析调用fun(5)的输出结果。

答:调用递归函数fun(5)时,先递推直到递归出口,然后求值。

这里的递归出口语句是,递推时执行的语句是,求值时执行的语句是调用fun(5)的输出结果如下:2.已知A[n]为整数数组,编写一个递归算法求n个元素的平均值。

答:设avg(A,i)返回A[0..i]这i+1个元素的平均值,则递归模型如下:对应的递归算法如下:求A[n]中n个元素平均值的调用方式为:avg(A,n-1)。

3.设计一个算法求整数n的位数。

答:设f(n)为整数n的位数,其递归模型如下:对应的递归算法如下:4.设有一个不带表头节点的单链表L,其节点类型如下:设计如下递归算法:(1)求以L为首节点指针的单链表的节点个数。

(2)正向显示以L为首节点指针的单链表的所有节点值。

(3)反向显示以L为首节点指针的单链表的所有节点值。

(4)删除以L为首节点指针的单链表中值为x的第一个节点。

(5)删除以L为首节点指针的单链表中值为x的所有节点。

(6)输出以L为首节点指针的单链表中最大节点值。

(7)输出以L为首节点指针的单链表中最小节点值。

答:根据单链表的基本知识,设计与各小题对应的递归算法如下:(1)(2)(3)(4)(5)(6)(7)上机实验题5实验题1 编写一个程序exp5-1.cpp,求解皇后问题:在n×n的方格棋盘上,放置n 个皇后,要求每个皇后不同行、不同列、不同左右对角线。

要求:(1)皇后的个数n由用户输入,其值不能超过20,输出所有的解。

(2)采用递归方法求解。

实验题2编写一个程序exp5-2.cpp,求解背包问题:设有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物品的方案,使选中物品的总重量不超过指定的限制重量,但选中物品的总价值最大。

李春葆《数据结构教程》(C++语言描述)课后习题(第5~8章)【圣才出品】

李春葆《数据结构教程》(C++语言描述)课后习题(第5~8章)【圣才出品】

三、算法设计题 (1)设定二维整数数组 B[0..m-1,0..n-1]的数据在行、列方向上都按从小到大的顺序 排序,且整型变量 x 中的数据在 B 中存在。试设计一个算法,找出一对满足 B[i,j]=x 的 i、 j 值,要求比较次数不超过 m+n。 答: void FindX(int &a,int x) {
(4)一个稀疏矩阵经过压缩后,和直接采用二维数组存储相比会失去______特性。 A.顺序存储 B.随机存取 C.输入/输出 D.以上都不对 【答案】B 【解析】稀疏矩阵可以采用三元组顺序表或是十字链表压缩存储,无论采取哪种方式, 均会使稀疏矩阵不再具有随机存取功能,答案为 B 项。
(5)当 m 行 n 列的稀疏矩阵采用十字链表表示时,其中单链表的个数为______。
(3)简述广义表、数组和线性表之间的异同。 答:一维数组可以看做是一个线性表,类似的也可以采用链式存储和顺序存储结构,但 是在计算机中直接将其视为连续的存储单元集合,二维数组同理可以视为每一个元素都是相 同类型的线性表的线性表,以此类推,任何多维数组都可以看做是线性表,其中每一个数据 元素也是一个线性表,所以说多维数组是线性表的推广。 广义表也是线性表的推广,其一般表示业余线性表相同,只不过其每一个元素既可以是 一个线性表,也可以是一个单个数据元素(原子),而线性表中的每一个元素只能是单个的 数据,这也就使得广义表一般只能用链式结构来表示,二线性表可以用顺序结构和链式结构 表示。
答:下三角矩阵的示意图如下图所示:
4 / 73
圣才电子书

十万种考研考证电子书、题库视频学习平台
a00 a10a11 a20a31a32 aij a 1 ij
在 A[i,j]之前共有 i 行,每行元素个数递增,同时此行有 j 个元素在其之前,因此其前

李春葆《数据结构教程》(第4版)笔记和课后习题详解(图)【圣才出品】

李春葆《数据结构教程》(第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)回路或环若一条路径上的开始点与结束点为同一个顶点,则称此路径为回路或环。

(NEW)李春葆《数据结构教程》(C++语言描述)配套题库【名校考研真题+课后习题+章节题库+模拟试题】

(NEW)李春葆《数据结构教程》(C++语言描述)配套题库【名校考研真题+课后习题+章节题库+模拟试题】
A.DIV R0,R1;(R0)/(R1)→R0 B.INT n;产生软中断 C.NOT R0;寄存器R0的内容取非 D.MOV R0,addr;把地址处的内存数据放入寄存器R0中 【答案】C 【解析】A项,除法操作出现除数为零的情况时,会产生内中断, CPU切换为内核态进行中断处理;B项,直接产生中断,会切换到内核 态;D项,addr出现非法地址,会出现中断,进而切换到内核态。
D.1用C语言写的某单位的认识管理程序语言,2操作系统,3编译
程序 【答案】B 【解析】计算机系统的组成如下图所示:
其中,C语言写的某单位的认识管理程序语言属于应用程序,编译 程序属于语言处理程序。
3 假定下列指令已装入指令寄存器。则执行时不可能导致CPU从 用户态变为内核态(系统态)的是( )。[2015年联考真题]
5 下列说法中( )不是创建进程必须的。[上海交通大学考研真 题]
A.建立一个进程的进程表项 B.为进程分配内存 C.为进程分配CPU D.将进程表项放入就绪队列 【答案】C 【解析】进程刚被创建后,实际上是处于就绪状态的,所以不许为 进程分配CPU。
6 若系统S1采用死锁避免方法,S2采用死锁检测方法,下列叙述 中正确的是( )。[2015年联考真题]
4 下列选项中会导致进程从执行态变为就绪态的事件是( )。 [2015年联考真题]
A.执行P(wait)操作 B.申请内存失败 C.启动I/0设备 D.被高优先级进程抢占 【答案】D 【解析】D项,被高优先级进程抢占,进程会由执行态变为就绪 态。ABC三项,程序由于缺少资源而由执行态转为阻塞态。
目录
第一部分 名校考研真题 一、选择题 二、综合应用题
第二部分 课后习题 第1章 绪 论 第2章 线性表 第3章 栈和队列 第4章 串 第5章 数组和广义表 第6章 树和二叉树 第7章 图 第8章 查 找 第9章 内排序 第10章 外排序 第11章 数据结构和STL

数据结构(李春葆)习题与解析

数据结构(李春葆)习题与解析

数据结构(李春葆)习题与解析编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(数据结构(李春葆)习题与解析)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为数据结构(李春葆)习题与解析的全部内容。

数据结构(C语言篇)―习题与解析(修订版)清华大学出版社一、绪论选择题1.数据结构是一门研究非数值计算的程序设计问题计算机的以及它们之间的和运算等的学科.1 A.数据元素 B。

计算方法C。

逻辑存储 D.数据映像2 A.结构 B.关系 C.运算 D.算法2。

数据结构被形式地定义为(K, R),其中K是的有限集,R是K 上的有限集。

1A。

算法 B。

数据元素C。

数据操作 D.逻辑结构2A。

操作 B。

映像C。

存储D。

关系3.在数据结构中,从逻辑上可以把数据结构分成。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C。

线性结构和非线性结构 D。

内部结构和外部结构4.线性结构的顺序存储结构是一种A的存储结构,线性表的链式存储结构是一种B的存储结构。

A.随机存取 B。

顺序存取 C.索引存取 D.散列存取5。

算法分析的目的是C,算法分析的两个主要方面是AB。

1 A.找出数据结构的合理性 B。

研究算法中的输入和输出的关系C。

分析算法的效率以求改进 D.分析算法的易懂性和文档性2 A.空间复杂度和时间复杂度 B.正确性和简单性C。

可读性和文档性 D.数据复杂性和程序复杂性6.计算机算法指的是C,它必须具备输入、输出和B等5个特性。

1 A.计算方法 B。

排序方法C。

解决问题的有限运算序列D.调度方法2 A.可执行性、可移植性和可扩充性B。

可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性7.线性表的逻辑顺序与存储顺序总是一致的,这种说法B。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档