实用数据结构基础(第四版)课后习题
一、判断题
(第一章 绪论)
1.数据元素是数据的最小单元。
答案:错误
2. 一个数据结构是由一个逻辑结构和这个逻辑结构上的基本运算集构成的整体。
答案:错误
3. 数据的存储结构是数据元素之间的逻辑关系和逻辑结构在计算机存储器内的映像。
答案:正确
4. 数据的逻辑结构是描述元素之间的逻辑关系,它是依赖于计算机的。
答案:错误
5.用语句频度来表示算法的时间复杂度的最大好处是可以独立于计算机的软硬件,分析算
法的时间
答案:正确
(第二章 线性表)
6.取顺序存储线性表的第i个元素的时间同i的大小有关。
答案:错误
7.线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。
答案:正确
8.线性链表的每一个节点都恰好包含一个指针域。
答案:错误
9.顺序存储方式的优点的存储密度大,插入和删除效率不如练市存储方式好。
答案:正确
10.插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。
答案:错误
(第三章 栈)
11.栈是一种对进栈和出栈作了限制的线性表。
答案:错误
12.在C(或C++)语言中设顺序栈的长度为MAXLEN,则top=MAXLEN表示栈满。
答案:错误
13.链栈与顺序栈相比,其特点之一是通常不会出现满栈的情况。
答案:正确
14.空栈就是所有元素都为0上的栈。
答案:错误
15.将十进制数转换为二进制数是栈的典型应用之一。
答案:正确
(第四章 队列)
16.队列式限制在两端进行操作的线性表。
答案:正确
17.判断顺序队列为空的标准是头指针和尾指针都指向同一结点。
答案:错误
18.在循环链列队中无溢出现像。
答案:错误
19.在循环队列中,若尾指针rear大于头指针front,则元素个数为rear-front。
答案:正确 20.顺序队列和循环队列关于队满和队空的判断条件是一样的。
答案:错误
(第五章 串)
21.串是n个字母的有限序列。
答案:错误
22.串的堆分配存储是一种动态存储结构。
答案:正确
23.串的长度是指串中不同字符的个数。
答案:错误
24.如贵一个串中所有的字母均在另一个串中出现,则说明前者是后者的子串。
答案:错误
25.在链串中为了提高存储密度,应该增大结点的大小。
答案:正确
(第六章 对维数组和广义表)
26. n维的多维数组可以视为n-1维数组元素组成的线性结构。
答案:正确
27.上三角矩阵对主角线以上(不包括对主角线中的元素),均为常数C。
答案:错误
28.数组的三元组表存储时对稀疏矩阵的压缩存储。
答案:正确
29.广义表Ls=(a0,a1,......an-1),则an-1是其表尾。
答案:错误
30.广义表((a,b),a,b)的表头和表尾是相等的。
答案:错误
(第七章 树和二叉树)
31.在完全二叉树中,若一个结点没有左孩子,则它必然是叶子节点。
答案:正确
32.含多于两棵树的森林转换到二叉树,其根节点一定无右子树。
答案:错误
33.二叉树的前序遍历中,任意一个节点均处于其子女节点的前面。
答案:正确
34.在中序线索二叉树中,右线索若不为空,则一定指向其双亲。
答案:错误
35.在哈夫曼编码中,当两个字符出现的频率相同的,其他编码也相同,对于这种情况应该做特殊处理。
答案:错误
(第八章 图)
36.在无相图中,(v1,v2)与(v2,v1)是两条不同的边。
答案:错误
37.图可以没有边,但不能没有顶点。
答案:正确
38.若一个无向图以顶点v1为起点,进行深度优先遍历,所得的遍历序列唯一,则可以唯一确定该图。
答案:错误 39.用邻接矩阵法存储一个图时,所占用的存储空间大小与图中的顶点个数无关,而只与图的边数有关。
答案:错误
40.存储无向图的邻接矩阵是对称的,因此只要存储邻接矩阵的上三角(或下三角)部分就可以了。
答案:正确
(第九章 查找)
41.在有序的顺序表和有序的链表上,均可以采用二分查找法来提高查找速度。
答案:错误
42.在二叉排序树中,根节点的这都小于孩子节点的值。
答案:错误
43.选择好的哈希函数就可以避免冲突的发生。
答案:错误
44.散列存储法的基本思想是由关键字的值决定数据存储地址。
答案:正确
45.在二叉排序树上删除一个节点时,不必移动其他节点,只要将该节点的父节点的相应指针域置空即可。
答案:错误
(第十章 排序)
46.如果某种排序算法不稳定,则该排序方法就没有使用价值。
答案:错误
47.希尔排序是不稳定的排序。
答案:正确
48.对排序所需的时间与待排序的记录个数无关。
答案:错误
49.快速排序在任何情况下都比其他排序方法速度快。
答案:错误
50.采用归并排序可以实现外排序。
答案:错误
二、填空题
(第一章 绪论)
1. 数据结果是一门研究非数值计算的程序设计问题中计算机的___数据元素___,以及它们之间关系和运算的学科。
2. 数据有逻辑结构和 __存储结构__两种结构。
3. 数据逻辑结构除了集合以外的还包括线性结构,树形结构和__图形结构__。
4. 数据结构按逻辑结构可分为两大类,分别是线性结构和__非线性结构__。
5. 图形结构和__树形结构__合称为非线性结构。
6. 在树形结构中,除了树根节点以外,其余每个节点都只有__1__个前驱结点。
7. 在图形结构中,每一个节点的前驱节点上数和后继节点数可以__互换__。
8. 数据的存储结构,又叫做数据的__物理结构__。
9. 数据的存储结构形式,包括顺序存储,链式存储索引存储和__散列存储__。
10. 树形结构中的元素之间存在__1对多__的关系。
11. 图形结构的元素之间存在__多对多__的关系。
12. 数据结构主要研究数据的逻辑结构,存储结构和__算法__三方面的内容。
13. 数据结构被定义为(D,R),D是数据的有限集合,R是D上的__逻辑关系__的有限集合
14. 算法是对特定问题__解决步骤__的描述。
15. 算法效率的度量可以分为事先估算和__事后统计__。
16. 一个算法的时间复杂度是算法__数据规模__的函数。
17. 算法的空间复杂度是指该算法所耗费的__存储空间__,他是该算法求解问题规模n的函数。
18. 若一个算法中,还有10万条基本语句,但有问题的规模无关,则该算法的时间复杂度为__O(1)__。
19. 若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为__O(n)__。
20. 若一个算法中的语句频度之和为T(n)=3n+nlog2n+n2,则算法的时间复杂度为__O(n^2)__。
(第二章 线性表)
1.在线性表中,数据的长度定义为__表长__。
2.顺序表中逻辑上相邻的元素在物理位置上__一定__相邻。
3.顺序表相对于链表的优点是__密度大__和随机存取。
4.某线性表采用顺序存储结构,每个元素占据4个存储单元,首地址为100则下标为11的(第12个元素)存储地址为__144__。
5.当线性表中的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取现象表中的元素时,应采用__顺序__存储结构。
6.顺序表中访问任意一个结点的时间复杂度均为__O(1)__。
7.在一个长度为n的顺序表中删除第i个元素要移动__n-i__个元素。
8.在一个长度为n的顺序表中,如果要在第二个元素前插入一个元素要后移__n-i+1__个元素。
9.线性表L=(a1,a2,......,an)用数组表示假定删除表中任意元素的概率相同,则删除一个元素平均需要移动元素的个数是__n/2__。
10.在线性表的链式存储中元素之间的逻辑关系是通过__指针__决定的。
11.在双向链表中每个节点都有两个指针域他们一个指向其__前驱__结点,另一个指向其后继结点。
12.线性表的元素总数不确定,且经常需要进行插入和删除操作,应采用__链式__存储结构。
13.在单向链表中,需要知道__表头指针__才能遍历整个链表。
14.在单向链表中,要在已知的节点*p之前插入一个新节点,需找到*p的直接前驱结点的地址,其查找的时间复杂度为__O(n)__。
15.单向循环链表的最大优点是__从任意节点出发__可以访问到链表中每一个元素。
16.在双向链表中要删除已知节点*p,其实间复杂度为__O(n)__。
17.带头节点的双循环链表L中判断只有一个元素节点的条件是__L->next->next==L(L->front->front==L)__。
18.对于双向链表,在两个节点之间插入一个新节点需要修改的指针共__4__个。
19.双向链表中,设p是指向其中待删除的节点,则需要执行的操作命令序列为:p->front->rear=p->rear;__p->rear->front=p->front__。
20.在如下所示的链表中,若在指针p所在的结点之后插入数据与值为a和b的两个节点,则可用语句__S->next->next=p->next__来实现该操作。
(第三章 栈)
1. 栈的特点是__先进后出__。
2. 在栈结构中,允许插入,删除的一端称为__栈顶__。
3. 在顺序栈中,在栈顶指针top=-1时表示__栈为空__。
4.顺序栈s存储在数组s->data[0..maxlen-1]中,进栈操作时首先需要执行的语句有:
s->top=__s->top+1__。
5.链栈LS为空的条件是__LS==NULL__。
6.已知顺序栈s在对s进行栈操作之前,首先要判断__栈满否__。
7.若内存空间充足,__链__栈可以不定义栈满运算。
8.同一栈的各元素类型__一致__。
9.在有n个元素的链栈中,进栈操作的时间复杂度为__O(1)__。
10.由于链栈的操作只在链表的头部进行,所以没有必要设置__头__节点。
11.从一个栈删除元素时,首先取出__栈顶元素__,然后在移动栈顶指针。
12.像一个栈顶指针为top的链栈插入一个新的节点*p时,应执行__p->next=top__和top=p的操作。
13.若进栈的次序是A、B、C、D、E执行三次出栈操作后栈顶元素为__B__。
14.四个元素按A、B、C、D顺序进s栈执行两次pop(S、X)后X的值是__C__。
15.设有一个顺序空栈,现有输入序列号ABCDE,经过push、push、pop、push、pop、push、push、pop操作之后输出序列式是__BCE__。
16.对一个初始值为空栈s执行操作push(s,5)、push(s,2)、push(s,4)、push(s,x)、readTop(s,x)后,x的值应是__2__。
17.设I表示入栈操作,O表示出栈操作,若元素入栈顺序为1,2,3,4为了得到1,3,4,2出栈顺序,则相应的I和O的操作串为__IOIIOIOO__。
数据结构课后习题答案第四章
第四章
一、 简述下列每对术语的区别:
空串和空白串;串常量和串变量;主串和子串;静态分配的顺序串和动态分配的顺序串;目标串和模式串;有效位移和无效位移。
答:
●空串是指不包含任何字符的串,它的长度为零。
空白串是指包含一个或多个空格的串,空格也是字符。
●串常量是指在程序中只可引用但不可改变其值的串。
串变量是可以在运行中改变其值的。
●主串和子串是相对的,一个串中任意个连续字符组成的串就是这个串的子串,而包含子串的串就称为主串。
●静态分配的顺序串是指串的存储空间是确定的,即串值空间的大小是静态的,在编译时刻就被确定。
动态分配的顺序串是在编译时不分配串值空间,在运行过程中用malloc和free等函数根据需要动态地分配和释放字符数组的空间(这个空间长度由分配时确定,也是顺序存储空间)。
●目标串和模式串:在串匹配运算过程中,将主串称为目标串,而将需要匹配的子串称为模式串,两者是相对的。
●有效位移和无效位移:在串定位运算中,模式串从目标的首位开始向右位移,每一次合法位移后如果模式串与目标中相应的字符相同,则这次位移就是有效位移(也就是从此位置开始的匹配成功),反之,若有不相同的字符存在,则此次位移就是无效位移(也就是从此位置开始的匹配失败)。
二、 假设有如下的串说明:
char s1[30]="Stocktom,CA", s2[30]="March 5 1999", s3[30], *p;
(1)在执行如下的每个语句后p的值是什么?
p=stchr(s1,'t'); p=strchr(s2,'9'); p=strchr(s2,'6');
(2)在执行下列语句后,s3的值是什么?
strcpy(s3,s1); strcat(s3,","); strcat(s3,s2);
(3)调用函数strcmp(s1,s2)的返回值是什么? (4)调用函数strcmp(&s1[5],"ton")的返回值是什么?
数据结构课后习题及答案
填空题( 10 * 1’ = 10' )
一、概念题
2。2.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。
2。3。当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。
2。6。带头结点的单链表L中只有一个元素结点的条件是L—〉Next->Next==Null。
3。6。循环队列的引入,目的是为了克服假溢出.
4。2。长度为0的字符串称为空串。
4。5.组成串的数据元素只能是字符。
4。8.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配 ,又称P为模式。
7.2。为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。
5.7。广义表的深度是广义表中括号的重数
7。8.有向图G可拓扑排序的判别条件是有无回路。
7.9。若要求一个稠密图的最小生成树,最好用Prim算法求解。
8。8. 直接定址法法构造的哈希函数肯定不会发生冲突。
9。2。排序算法所花费的时间,通常用在数据的比较和交换两大操作。
1。1。通常从正确性﹑可读性﹑健壮性﹑时空效率等几个方面评价算法的(包括程序)的质量。
1。2.对于给定的n元素,可以构造出的逻辑结构有集合关系﹑线性关系 树形关系﹑图状关系四种。
1。3。存储结构主要有顺序存储﹑链式存储﹑索引存储﹑散列存储四种 。
1。4。抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的
数学特性不变,都不影响其外部使用。
1。5.一个算法具有五大特性:有穷性﹑确定性﹑可行性,有零个或多个输入﹑有一个或多个输入。
2.8.在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:
s—〉prior= p—〉prior; s-〉next= p; p-〉prior- next= s; p-〉prior= s;。
数据结构课后习题答案
学习必备
欢迎下载
第 1 章 绪 论
课后习题讲解
1. 填空
⑴( )是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
【解答】数据元素
⑵( )是数据的最小单位,( )是讨论数据结构时涉及的最小数据单位。
【解答】数据项,数据元素
【分析】数据结构指的是数据元素以及数据元素之间的关系。
⑶ 从逻辑关系上讲,数据结构主要分为( )、( )、( )和( )。
【解答】集合,线性结构,树结构,图结构
⑷ 数据的存储结构主要有( )和( )两种基本方法,不论哪种存储结构,都要存储两方面的内容:( )和( )。
【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系
⑸ 算法具有五个特性,分别是( )、( )、( )、( )、( )。
【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性
⑹ 算法的描述方法通常有( )、( )、( )和( )四种,其中,( )被称为算法语言。
【解答】自然语言,程序设计语言,流程图,伪代码,伪代码
⑺ 在一般情况下,一个算法的时间复杂度是( )的函数。
【解答】问题规模
⑻ 设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为( ),若为n*log25n,则表示成数量级的形式为( )。
【解答】Ο(1),Ο(nlog2n)
【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。
2. 选择题
⑴ 顺序存储结构中数据元素之间的逻辑关系是由( )表示的,链接存储结构中的数据元素之间的逻辑关系是由( )表示的。
A 线性结构 B 非线性结构 C 存储位置 D 指针
【解答】C,D
【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。
数据结构课后习题答案及解析第六章
..WORD完美格式..
..专业知识编辑整理..
第六章树和二叉树(下载后用阅读版式视图或web版式可以看清)
习 题
一、选择题
1.有一“遗传”关系:设x是y的父亲,则x可以把它的属性遗传给y。表示该遗传关系最适合的数据结构为( )。
A.向量 B.树 C图 D.二叉树
2.树最合适用来表示( )。
A.有序数据元素 B元素之间具有分支层次关系的数据
C无序数据元素 D.元素之间无联系的数据
3.树B的层号表示为la,2b,3d,3e,2c,对应于下面选择的( )。
A. la (2b (3d,3e),2c) B. a(b(D,e),c)
C. a(b(d,e),c) D. a(b,d(e),c)
4.高度为h的完全二叉树至少有( )个结点,至多有( )个结点。
A. 2h_l B.h C.2h-1 D. 2h
5.在一棵完全二叉树中,若编号为f的结点存在右孩子,则右子结点的编号为( )。
A. 2i B. 2i-l C. 2i+l D. 2i+2
6.一棵二叉树的广义表表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为 ( )。
A.3 B.4 C.5 D.6
7.深度为5的二叉树至多有( )个结点。
A. 31 B. 32 C. 16 D. 10
数据结构课后习题
. . .. ..
. 专业word可编辑 . 第一章
3.(1)A(2)C(3)D
5.计算下列程序中x=x+1的语句频度
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
for(k=1;k<=j;k++)
x=x+1;
【解答】x=x+1的语句频度为:
T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n)=n(n+1)(n+2)/6
6.编写算法,求 一元多项式pn(x)=a0+a1x+a2x2+…….+anxn的值pn(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。注意:本题中的输入为ai(i=0,1,…n)、x和n,输出为Pn(x0)。 算法的输入和输出采用下列方法
(1)通过参数表中的参数显式传递
(2)通过全局变量隐式传递。讨论两种方法的优缺点,并在算法中以你认为较好的一种实现输入输出。
【解答】
(1)通过参数表中的参数显式传递
优点:当没有调用函数时,不占用内存,调用结束后形参被释放,实参维持,函数通用性强,移置性强。
缺点:形参须与实参对应,且返回值数量有限。
(2)通过全局变量隐式传递
优点:减少实参与形参的个数,从而减少内存空间以及传递数据时的时间消耗
缺点:函数通用性降低,移植性差
算法如下:通过全局变量隐式传递参数
PolyValue()
{ int i,n;
float x,a[],p;
printf(“\nn=”);
scanf(“%f”,&n);
printf(“\nx=”);
scanf(“%f”,&x);
数据结构教材课后习题及参考答案习题 (10)[3页]
习题6
一.填空题
1.树中除根结点外,其他结点有且只有 个直接前驱结点,但可以有 个直接后继结点。
2.树中结点的度,是指结点拥有 的个数;一棵具有n个结点的树,该树中所有结点的度数之和为 。
3.深度为h的完全二叉树至少有 个结点,至多有 个结点,若按层序从1开始编号,则编号最小的叶子结点的编号是 。
4.一棵有n个结点的满二叉树有 个度为1的结点、有 个分支结点和
个叶子,该满二叉树的深度为 。
5.将一棵完全二叉树按层序从1进行编号,对编号为i的结点,如果有左孩子,则左孩子的编号应该是 ;如果有右孩子,则右孩子的编号应该是 。
6.一棵完全二叉树有1001个结点,其深度是 ,叶子结点个数是
。
7.假设根结点的层数为1,具有n个结点的二叉树的最大高度是 。
8.树的先根遍历序列与其对应二叉树的
遍历序列相同,树的后根遍历序列与其对应二叉树的
遍历序列相同。
9.若二叉树共有n个结点,采用线索链表存储其线索二叉树,那么在所有存储结点里,一共有 个指针域,其中有
个指针是指向其孩子结点的, 个指针是指向其前驱后继结点的。指向前驱后继结点的指针称为 。
10.哈夫曼树又称
。它是n个带权叶子结点构成的所有二叉树中,带权路径长度
的二叉树。
11.哈夫曼树中,权值较大的叶结点一定离根结点 。由n个带权值的叶结点生成的哈夫曼树中共有 个结点,其中有 个分支结点。
12.哈夫曼树中不存在度为 的结点。
二.选择题
1.有关二叉树下列说法正确的是( )
A.二叉树的度为2 B.一棵二叉树的度可以小于2
数据结构课后习题(第4-5章)
百度文库 - 让每个人平等地提升自我
1 【课后习题】第4章 串
第5章 数组和广义表
网络工程2010级( )班 学号: 姓名:
题 号 一 二 三 四 总分
得
分
一、填空题(每空1分,共30分)
1. 串有三种机内表示方法: 、 和 ,其中前两种属于顺序存储结构,第三种属于 。
2. 若n为主串长度,m为子串长度,则串的BF(朴素)匹配算法最坏的情况下需要比较字符的总次数为 ,T(n)= 。
3. 是任意串的子串;任意串S都是S本身的子串,除S本身外,S的其他子串称为S的 。
4. 设数组a[1…50, 1…60]的基地址为1000,每个元素占2个存储单元,若以行序为主序顺序存储,则元素a[32,58]的存储地址为
。
5. 对于数组,比较适于采用 结构够进行存储。
6. 广义表的深度是指_______。
7.
将一个100100A的三对角矩阵,按行优先存入一维数组B[297]中,A中元素66,66A在B数组中的位置k为 。
8. 注意:ai,j的k为 2(i-1)+j-1,(i=1时j=1,2;1
9.
称为空串;
称为空白串。
10. 求串T在主串S中首次出现的位置的操作是 ,其中 称为目标串, 称为模式。
11. 对称矩阵的下三角元素a[i,j],存放在一维数组V的元素V[k]中(下标都是从0开始),
12. k与i,j的关系是:k= 。
《数据结构》教材课后习题+答案
《数据结构》教材课后习题+答案
数据结构
第一章 介绍
数据结构是计算机科学中重要的概念,它涉及到组织和存储数据的方法和技术。数据结构的选择对于算法的效率有着重要的影响。本教材为读者提供了丰富的课后习题,以帮助读者巩固所学知识并提高解决问题的能力。下面是一些选定的习题及其答案,供读者参考。
第二章 线性表
习题一:
给定一个顺序表L,编写一个算法,实现将其中元素逆置的功能。
答案一:
算法思路:
1. 初始化两个指针i和j,分别指向线性表L的首尾两个元素
2. 对于L中的每一个元素,通过交换i和j所指向的元素,将元素逆置
3. 当i>=j时,停止逆置
算法实现:
```python def reverse_list(L):
i, j = 0, len(L)-1
while i < j:
L[i], L[j] = L[j], L[i]
i += 1
j -= 1
```
习题二:
给定两个线性表A和B,编写一个算法,将线性表B中的元素按顺序插入到线性表A中。
答案二:
算法思路:
1. 遍历线性表B中的每一个元素
2. 将B中的元素依次插入到A的末尾
算法实现:
```python
def merge_lists(A, B):
for element in B:
A.append(element) ```
第三章 栈和队列
习题一:
编写一个算法,判断一个表达式中的括号是否匹配。表达式中的括号包括小括号"()"、中括号"[]"和大括号"{}"。
答案一:
算法思路:
1. 遍历表达式中的每一个字符
2. 当遇到左括号时,将其推入栈中
3. 当遇到右括号时,判断栈顶元素是否与其匹配
4. 当遇到其他字符时,继续遍历下一个字符
5. 最后判断栈是否为空,若为空则表示括号匹配
算法实现:
```python
def is_matching(expression):
数据结构课后题答案(第4章).
数据结构部分课后习题答案第四章
4.1
广度优先生成树(黑体加粗边:
深度拓扑排序序列:v0-v2-v3-v1-v4
4.2
广度
深度
(1
(2
加边顺序
a-b b-e e-d d-f f-c
4.3、 如图所示为一个有6个顶点{u1,u2,u3,u4,u5,u6}的带权有向图的邻接矩阵。 根据此邻接矩阵画出相应的带权有向图,利用dijkstra 算法求第一个顶点u1到其余各顶点的最短路径,并给出计算过程。
带权有向图:
4.4证明在图中边权为负时Dijkstra算法不能正确运行
若允许边上带有负权值,有可能出现当与S(已求得最短路径的顶点集,归入S内的结点的最短路径不再变更内某点(记为a以负边相连的点(记为b确定其最短路径时,它的最短路径长度加上这条负边的权值结果小于a原先确定的最短路径长度,而此时a在Dijkstra算法下是无法更新的。
4.5
P.198 图中的权值有负值不会影响prim和kruskal的正确性
如图:
KRUSKAL求解过程:
4.6 Dijkstra算法如何应用到无向图?
答:Dijkstra算法通常是运用在带非负权值的有向图中,但是无向图其实就是两点之间两条有向边权值相同的特殊的有向图,这样就能将Dijkstra算法运用到无向图中。
4.7
用FLOYD算法求出任意两顶点的最短路径(如图A(6所示。
A(0= A(1= A(2=
A(3= A(4=
A(5= A(6= V1 到 V2、V3、V4、V5、V6 往返路径长度分别为 5,9,5,9,9,最长为 9, 总的往返路程为 37 同理 V2 到 V1、V3、V4、V5、V6 分别为 5,8,4,4,13,最长为 13,总和 34 V3 对应分别为 9,8,12,8,9,最长为 12,总和为 46 V4 对应分别为 5,4,12,4,9,最长为 12,总和为 34 V5 对应分别为
9,4,8,4,9,最长为 9,总和为 34 V6 对应分别为 9,13,9,9,9,最长为
数据结构课后习题答案第四章 2
第四章 串
一、单项选择题 1.B
2. B
3.B
4.C
5. C
二、填空题
1.空、字符
2. 由空格字符(ASCII值32)所组成的字符串 空格个数
3.长度、相等、子、主 4.5
5.01122312
6.(1)char s[ ] (2) j++ (3) i >= j
7.[题目分析]本题算法采用顺序存储结构求串s和串t的最大公共子串。串s用i指针
(1<=i<=s.len)。t串用j指针(1<=j<=t.len)。算法思想是对每个i(1<=i<=s.len,即程序中第一个WHILE循环),来求从i开始的连续字符串与从j(1<=j<=t.len,即程序中第二
个WHILE循环)开始的连续字符串的最大匹配。程序中第三个(即最内层)的WHILE循环,
是当s中某字符(s[i])与t中某字符(t[j])相等时,求出局部公共子串。若该子串长
度大于已求出的最长公共子串(初始为0),则最长公共子串的长度要修改。
(1) i+k<=s.len && j+k<=t.len && s[i+k]==t[j+k] //所有注释同上(a) (2) con=0 (3) j+=k (4) j++ (5) i++
三、应用题
1.空格是一个字符,其ASCII码值是32。空格串是由空格组成的串,其长度等于空格的个
数。空串是不含任何字符的串,即空串的长度是零。
2.(a)A+B “ mule”
(b)B+A “mule ”
(c)D+C+B “myoldmule”
(d)SUBSTR(B,3,2) “le” (e)SUBSTR(C,1,0) “ ”
(f)LENGTH(A) 2
(g)LENGTH(D) 2
(h)INDEX(B,D) 0
(i)INDEX(C,”d”) 3 (j)INSERT(D,2,C) “myold”
(k)INSERT(B,1,A) “m ule”
(l)DELETE(B,2,2) “me”
