最全数据结构课后习题答案耿国华版[1] 下载本文

if(B->len>0) {

position[1]=1;

for(t=1;t<=A.len;t++)

position[A.data[t].col+1]++; /*position[col]存放第col-1列非零元素的个数,

即利用pos[col]来记录第col-1列中非零元素的个数*/

/*求col列中第一个非零元素在B.data[ ]的位置,存放在position[col]中*/ for(col=2;col<=A.n;col++)

position[col]=position[col]+position[col-1]; for(p=1;p

col=A.data[p].col; q=position[col];

B->data[q].row=A.data[p].col; B->data[q].col=A.data[p].row; B->data[q].e=A.data[p].e; Position[col]++; } } }

算法(二)

FastTransposeTSMatrix(TSMartrix A, TSMatrix *B) {

int col,t,p,q;

int position[MAXSIZE];

B->len=A.len; B->n=A.m; B->m=A.n; if(B->len>0) {

for(col=1;col<=A.n;col++) position[col]=0; for(t=1;t<=A.len;t++)

position[A.data[t].col]++; /*计算每一列的非零元素的个数*/

/*从最后一列起求每一列中第一个非零元素在B.data[]中的位置,存放在position[col]中*/

for(col=A.n,t=A.len;col>0;col--) { t=t-position[col]; position[col]=t+1; }

for(p=1;p

col=A.data[p].col; q=position[col];

B->data[q].row=A.data[p].col; B->data[q].col=A.data[p].row; B->data[q].e=A.data[p].e; Position[col]++; } } }

8.画出下面广义表的两种存储结构图示: ((((a), b)), ((( ), d), (e, f))) 【解答】

9

第一种存储结构

第二种存储结构

9.求下列广义表运算的结果:

(1) HEAD[((a,b),(c,d))]; (a,b) (2) TAIL[((a,b),(c,d))]; ((c,d)) (3) TAIL[HEAD[((a,b),(c,d))]]; (b) (4) HEAD[TAIL[HEAD[((a,b),(c,d))]]]; b (5) TAIL[HEAD[TAIL[((a,b),(c,d))]]]; (d)

第六章

第六章答案

6. 1分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。 【解答】

10

具有3个结点的树 具有3个结点的二叉树

6.3已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,……,nk个度为k的结点,则该树中有多少个叶子结点?

【解答】设树中结点总数为n,则n=n0 + n1 + …… + nk

树中分支数目为B,则B=n1 + 2n2 + 3n3 + …… + knk

因为除根结点外,每个结点均对应一个进入它的分支,所以有n= B + 1 即n0 + n1 + …… + nk = n1 + 2n2 + 3n3 + …… + knk + 1

由上式可得叶子结点数为:n0 = n2 + 2n3 + …… + (k-1)nk + 1

6.5已知二叉树有50个叶子结点,则该二叉树的总结点数至少应有多少个? 【解答】n0表示叶子结点数,n2表示度为2的结点数,则n0 = n2+1

所以n2= n0 –1=49,当二叉树中没有度为1的结点时,总结点数n=n0+n2=99 6.6 试分别找出满足以下条件的所有二叉树:

(1) 前序序列与中序序列相同; (2) 中序序列与后序序列相同; (3) 前序序列与后序序列相同。 【解答】 (1) 前序与中序相同:空树或缺左子树的单支树; (2) 中序与后序相同:空树或缺右子树的单支树; (3) 前序与后序相同:空树或只有根结点的二叉树。

6.9 假设通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为:

0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10 请为这8个字母设计哈夫曼编码。 【解答】

构造哈夫曼树如下:

11

哈夫曼编码为:

I1:11111 I5:1100 I2:11110 I6: 10

I3:1110 I7: 01 I4:1101 I8: 00

6.11画出如下图所示树对应的二叉树。

【解答】

12