《数据结构与算法》课后习题答案

发布时间 : 星期日 文章《数据结构与算法》课后习题答案更新完毕开始阅读

KMP算法主要优点就是主串指针不回溯。当主串很大不能一次读入内存且经常发生部分匹配时,KMP算法得优点更为突出。闫样鸨標厭瀧侖。 2.设字符串S=‘aabaabaabaac',P=‘aabaac'。 (1)给出S与P得next值与nextval值;

(2)若S作主串,P作模式串,试给出利用KMP算法得匹配过程。 【解答】

(1)S得next与nextval值分别为9与9,p得next与nextval值分别为012123与002003。

姍鋨榇緙帥绨繽。 (2)利用BF算法得匹配过程: 利用KMP算法得匹配过程:

第一趟匹配:aabaabaabaac 第一趟匹配:aabaabaabaac

aabaac(i=6,j=6) aabaac(i=6,j=6) 醞沥諂躊铡蠼缭。 第二趟匹配:aabaabaabaac 第二趟匹配:aabaabaabaac aa(i=3,j=2) (aa)baac

第三趟匹配:aabaabaabaac 第三趟匹配:aabaabaabaac a(i=3,j=1) (成功) (aa)baac 第四趟匹配:aabaabaabaac aabaac(i=9,j=6) 第五趟匹配:aabaabaabaac aa(i=6,j=2) 第六趟匹配:aabaabaabaac a(i=6,j=1) 第七趟匹配:aabaabaabaac

(成功) aabaac(i=13,j=7)

3.假设按行优先存储整数数组A[9][3][5][8]时,第一个元素得字节地址就是100,每个整数占4个字节。问下列元素得存储地址就是什么?蘆顆陣鳟瘅儐唛。 (1) a0000 (2)a1111 (3)a3125 (4)a8247

【解答】(1) LOC( a0000)= 100

(2) LOC( a1111)=100+(3*5*8*1+5*8*1+8*1+1)*4=776 (3) LOC( a3125)=100+(3*5*8*3+5*8*1+8*2+5) *4=1784 (4) LOC( a8247)= 100+(3*5*8*8+5*8*2+8*4+7) *4=4816 4.假设一个准对角矩阵:

鲞彥釵卖懣鵯偽。 a11 a12 按以下方式存储于一维数组B[4m]中(m为一个整数): a21 a22 0 1 2 a3 4 5 6 … k … 4m-1 4m 33 a34 a4344 a 11 a 12 a21 a aaa34 a43 … aij … a2m-1,2m a2m,2m-1 a2m,2m 2233 …、 写出下标转换函数k=f(i,j)。 aij 【解答】 a2m-1,2m-1 a2m-1,2m 由题目可知,每一行有两个非 0 元素。 a2m,2m-1 a2m,2m 当i为奇数时,第i行得元素为:ai,i、ai,(i+1),此时k=2*(i-1)+j-i=i+j-2

当i为偶数时,第i行得元素为:ai,(i-1)、ai,i,此时k=2*(i-1)+j-I+1=i+j-1裤灤獸讦诖馱来。 综上所述,k=i+j-i%2-1。

5.设有n×n得带宽为3得带状矩阵A,将其3条对角线上得元素存于数组B[3][n]中,

使得元素B[u][v]=aij,试推导出从(i,j)到 (u,v)得下标变换公式。軍虛寧亏誄憒攒。 【解答】

u=j-i+1 v=j-1

6.现有如下得稀疏矩阵A(如图所示),要求画出以下各种表示方法。 (1)三元组表表示法 (2)十字链表法。

騖籠膃险聋灭凉。 0 0 0 22 0 -15

【解答】 0 13 3 0 0 0 0 0 (1)三元组表表示法: 0 -6 0 0 0 0 0 0 0 0 i j v 91 0 0 0 0 0 1 1 4 22 0 0 28 0 0 0 2 1 6 -15 3 2 2 13 4 2 3 3 5 3 4 -6 6 5 1 91 7 6 3 28 (2)十字链表法:

訴荆蝈漵诀篤趸。 0 1 2 3 4 ^ 5 1 6 -15 7.画出下列广义表得头尾表示存储结构示意图。 (1)A=((a,b,c),d,(a,b,c)) 1 4 22 (2)B=(a,(b,(c,d),e),f) 0 (1) 2 2 13 2 3 3 1 1 1 ^ ^ (2) 岡帐腻巹赀廳猶。 ^ 1 ^ ^ 1 2 1 0 a 1 1 1 b 1 1 ^ 1 c 1 3 4 -6 1 d 1 ^ 1 ^ 0 f 5、3 课后习题解答0 a 1 5、3、1 选择题 5 1 91 ^ ^ 3 ^ 4 1.下列说法正确得就是(C)。 ^ ^ A.二叉树中任何一个结点得度都为2 0 c 0 d 6 3 28 B.二叉树得度为2 5 C .一棵二叉树得度可小于2 ^ ^ D.任何一棵二叉树中至少有一个结点得度为2 2.以二叉链表作为二叉树得存储结构,在具有n个结点得二叉链表中(n>0),空链域得个数为(C)。

A.2n-1 B.n-1 C.n+1 D.2n+1

3.线索化二叉树中,某结点*p没有孩子得充要条件就是(B)。 A.p->lchild=NULL B.p->ltag=1且p->rtag=1

0 b 1 ^ 0 c C.p->ltag=0 D.p->lchild=NULL 且p->ltag=1銑獻轨褲鴛哑驪。 4.如果结点A有3个兄弟,而且B就是A得双亲,则B得度就是(B)。 A.3 B.4 C.5 D.1 5.某二叉树T有n个结点,设按某种顺序对T中得每个结点进行编号,编号值为1,2,、、、n。且有如下性质:T中任意结点v,其编号等于左子树上得最小编号减1,而v得右子树得结点中,其最小编号等于v左子树上结点得最大编号加1,这就是按(B)编号得。閶骥蠐孙弪僅榄。 A. 中序遍历序列 B. 先序遍历序列 C. 后序遍历序列 D. 层次顺序

6.设F就是一个森林,B就是由F转换得到得二叉树,F中有n个非终端结点,B中右指针域为空得结点有(C)个。榈为鄒適齦錢脶。 A.n-1 B. n C. n+1 D.n+2

7.一棵完全二叉树上有1001个结点,其中叶子结点得个数就是(C)。 A. 500 B. 501 C.490 D.495

8.设森林F中有三棵树,第一,第二,第三棵树得结点个数分别为N1,N2与N3。与森林F对应得二叉树根结点得右子树上得结点个数就是(D)。蟯綈織輟鋇闭胀。 A.N1 B.N1+N2 C.N2 D.N2+N3

9.任何一棵二叉树得叶结点在先序、中序、后序遍历序列中得相对次序(A)。 A.不发生改变 B. 发生改变 C. 不能确定 D. 以上都不对

10.若一棵二叉树得后序遍历序列为dabec,中序遍历序列为debac,则先序遍历序列

为(D)。

A.cbed B.decab C.deabc D.cedba

11.若一棵二叉树得先序遍历序列为abdgcefh,中序遍历得序列为dgbaechf,则后序遍历得结果为(D)。 餍孪叹愤陕讎隸。 A. gcefha B. gdbecfha C. bdgaechf D. gdbehfca间澀壮赊疮頓擄。 12.一棵非空二叉树得先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足(B)。

A.所有得结点均无左孩子 B.所有得结点均无右孩子 C.只有一个叶子结点 D.就是一棵满二叉树 13.引入线索二叉树得目得就是(A)。 A.加快查找结点得前驱或后继得速度 B.为了能在二叉树中方便得进行插入与删除 C.为了能方便得找到双亲 D.使二叉树得遍历结果唯一 14.设高度为h得二叉树上只有度为0与度为2得结点,则此类二叉树中所包含得结点数至少为(B)。

A.2*h B. 2*h-1 C. 2*h+1 D.h+1 15.一个具有567个结点得二叉树得高h为(D)。

A.9 B.10 C.9至566之间 D.10至567之间

16.给一个整数集合{3,5,6,7,9},与该整数集合对应得哈夫曼树就是(B)。 A. B. C. D.痫舉猪溫钦恺笋。

3 5、3、2 判断题 5 9 6 7 9 9 1.二叉树就是树得特殊形式。(√) 7 6 (√) 3 5 6 6 2.由树转换成二叉树,其根结点得右子树总就是空得。3 7 5 3.先根遍历一棵树与先序遍历与该树对应得二叉树,其结果不同。(×) 7 9 3 5 4.先根遍历森林与先序遍历与该森林对应得二叉树,其结果不同。(×) 5.完全二叉树中,若一个结点没有左孩子,则它必就是叶子。(√) 6.对于有N个结点得二叉树,其高度为?log2N?+1。(×)

7.若一个结点就是某二叉树子树得中序遍历序列中得最后一个结点,则它必就是该子树得先序遍历序列中得最后一个结点。(√)務輩灣铋携藓噓。 8.若一个结点就是某二叉树子树得中序遍历序列中得第一个结点,则它必就是该子树得后序遍历序列中得第一个结点。(√)讜鈴瓊鷸唛鑄见。 9.不使用递归也可实现二叉树得先序、中序与后序遍历。(√) 10.先序遍历二叉树得序列中,任何结点得子树得所有结点不一定跟在该结点之后。(×) 11.先序与中序遍历用线索树方式存储得二叉树,不必使用栈。(×)

12.在后序线索二叉树中,在任何情况下都能够很方便地找到任意结点得后继。(×) 13.哈夫曼树就是带权路径长度最短得树,路径上权值较大得结点离根较近。(√) 14.在哈夫曼编码中,出现频率相同得字符编码长度也一定相同。(×) 15.用一维数组存放二叉树时,总就是以先序遍历存储结点。(×) 16.由先序序列与后序序列能唯一确定一棵二叉树。(×) 17.由先序序列与中序序列能唯一确定一棵二叉树。(√) 18.对一棵二叉树进行层次遍历时,应借助于一个栈。(×)

19.完全二叉树可采用顺序存储结构实现存储,非完全二叉树则不能。(×) 20.满二叉树一定就是完全二叉树,反之未必。(√)

5、3、3 简答题

1.一棵度为2得树与一棵二叉树有何区别?树与二叉树之间有何区别? 【解答】

①二叉树就是有序树,度为2得树就是无序树,二叉树得度不一定就是2。

②二叉树就是有序树,每个结点最多有两棵子树,树就是无序树,且每个结点可以有多棵子树。学搀淺攆骐浑叁。 A 2.对于图1所示二叉树,试给出: (1)它得顺序存储结构示意图; C B (2)它得二叉链表存储结构示意图; (3)它得三叉链表存储结构示意图。 D F E 【解答】

(1)顺序存储结构示意图:

A B C D E F ^ ^ ^ G ^ ^ H (2)二叉链表存储结构示意图: (3)三叉链表存储结构示意图:

繩凱轡蠣赝粵觸。 G (图 1)

H 3.对于图2所示得树,试给出: A B C ^ (1)双亲数组表示法示意图; B C ^ (2)孩子链表表示法示意图; B ^ D ^ E ^ ^ F (3)孩子兄弟链表表示法示意图。 ^ D ^ E ^ ^ F E G F ^ ^ H ^ 【解答】 G ^ (1)双亲数组表示法示意图: (2)孩子链表表示法示意图: H ^ G ^ ^ J H ^ K (图 2) 罗紉貓绳库废紅。 (3)孩子兄弟链表表示法示意图: 0 A -1 險攛谅鍍嚨鸾貫。1 A A ^ C D M I N 0 1 2 3 4 F 5 A B C D E F E 1 5 3 C 11 ^ 9 D 7 ^ 2 ^ 6 4 10 ^ I 8 ^ B C D E F 0 0 2 B 2 ^ 1 G 2 3 4 5 A

联系合同范文客服:xxxxx#qq.com(#替换为@)