为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

「第4-10章作业部分参考答案」

2022-04-03 1页 doc 520KB 10阅读

用户头像 个人认证

is_661419

暂无简介

举报
「第4-10章作业部分参考答案」第4-5章作业答案:1. 不包含任何字符(长度为0)的串称为空串;由一个或多个空格(仅由空格符)组成的串  称为空白串。2、设数组a[1…60,1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为8950  。答:不考虑0行0列,利用列优先公式:LOC(aij)=LOC(ac1,c2)+[(j-c2)*(d1-c1+1)+i-c1)]*L得:LOC(a32,58)=2048+[(58-1)*(60-1+1)+32-1]]*2=8950第6章作业答案:1.画出和下列二叉...
「第4-10章作业部分参考答案」
第4-5章作业:1. 不包含任何字符(长度为0)的串称为空串;由一个或多个空格(仅由空格符)组成的串  称为空白串。2、设数组a[1…60,1…70]的基地址为2048,每个元素占2个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为8950  。答:不考虑0行0列,利用列优先公式:LOC(aij)=LOC(ac1,c2)+[(j-c2)*(d1-c1+1)+i-c1)]*L得:LOC(a32,58)=2048+[(58-1)*(60-1+1)+32-1]]*2=8950第6章作业答案:1.画出和下列二叉树相应的森林。答:注意根右边的子树肯定是森林,而孩子结点的右子树均为兄弟。2.编写递归算法,计算二叉树中叶子结点的数目。思路:输出叶子结点比较简单,用任何一种遍历算法,凡是左右指针均空者,则为叶子,将其统计并打印出来。Intcount_leaf(Bitree root,int&sum)//采用先序遍历的递归算法{ if( root!=NULL)//非空二叉树条件,还可写成if(root) {if(!root->lchild&&!root->rchild)//是叶子结点则统计并打印 {sum++;printf("%d\n",root->data);} count_leaf(root->lchild); //递归遍历左子树,直到叶子处;count_leaf(root->rchild);}//递归遍历右子树,直到叶子处;}return(0);}3.编写递归算法,求二叉树中以元素值为a的结点为根的子树的深度。int Get_Sub_Depth(BitreeT,int a)//求二叉树中以值为x的结点为根的子树深度{ if(T->data==x){  printf("%d\n",Get_Depth(T));//找到了值为x的结点,求其深度  exit 1;} }else {  if(T->lchild)Get_Sub_Depth(T->lchild,a);  if(T->rchild)Get_Sub_Depth(T->rchild,a);//在左右子树中继续寻找}}//Get_Sub_DepthintGet_Depth(BitreeT)//求子树深度的递归算法 {if(!T)return 0; else{  m=Get_Depth(T->lchild);   n=Get_Depth(T->rchild); return(m>n?m:n)+1;}}//Get_Depth4.假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。试为这8个字母哈夫曼编码。使用0~7的二进制表示形式是另一种编码。对于上述实例,比较两种方案的优缺点。解:方案1;哈夫曼编码先将概率放大100倍,以方便构造哈夫曼树。 w={7,19,2,6,32,3,21,10},按哈夫曼规则:【[(2,3),6], (7,10)】,……19,21,32  0 1 01 0121 3210101106123 (100)(40)   (60)19 21 32 (28)(11)710 6 (5)  2 3方案比较:字母编号对应编码出现频率111000.072000.193111100.02411100.065100.326111110.037010.21811010.10字母编号对应编码出现频率10000.0720010.1930100.0240110.0651000.3261010.0371100.2181110.10方案1的WPL=2(0.19+0.32+0.21)+4(0.07+0.06+0.10)+5(0.02+0.03)=1.44+0.92+0.25=2.61方案2的WPL=3(0.19+0.32+0.21+0.07+0.06+0.10+0.02+0.03)=3结论:哈夫曼编码优于等长二进制编码第7章作业答案:第9章作业答案:1.假定对有序表:(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找,试回答下列问题:画出描述折半查找过程的判定树;若查找元素54,需依次与哪些元素比较?若查找元素90,需依次与哪些元素比较?假定每个元素的查找概率相等,求查找成功时的平均查找长度。解:先画出判定树如下(注:mid=(1+12)/2=6):305 6337 42  87    4   24  5472   95(2)查找元素54,需依次与30,63, 42, 54 等元素比较;(3)查找元素90,需依次与30,63,87, 95,72等元素比较;(4)求ASL之前,需要统计每个元素的查找次数。判定树的前3层共查找1+2×2+4×3=17次;但最后一层未满,不能用8×4,只能用5×4=20次,所以ASL=1/12(17+20)=37/12≈3.082、设哈希(Hash)表的地址范围为0~17,哈希函数为:H(K)=K MOD 16。K为关键字,用线性探测法再散列法处理冲突,输入关键字序列:  (10,24,32,17,31,30,46,47,40,63,49)造出Hash表,试回答下列问题:画出哈希表的示意图;若查找关键字63,需要依次与哪些关键字进行比较?若查找关键字60,需要依次与哪些关键字比较?假定每个关键字的查找概率相等,求查找成功时的平均查找长度。解:(1)画表如下:012345678910111213141516173217634924401030314647(2)查找63,首先要与H(63)=63%16=15号单元内容比较,即63vs31 ,no;然后顺移,与46,47,32,17,63相比,一共比较了6次!(3)查找60,首先要与H(60)=60%16=12号单元内容比较,但因为12号单元为空(应当有空标记),所以应当只比较这一次即可。(4) 对于黑色数据元素,各比较1次;共6次;对红色元素则各不相同,要统计移位的位数。“63”需要6次,“49”需要3次,“40”需要2次,“46”需要3次,“47”需要3次,所以ASL=1/11(6+2+3×3)=17/11=1.5454545454≈1.55第10章作业答案:1、设要将序列(Q, H,C,Y, P, A,M,S, R,D, F,X)中的关键码按字母序的升序重新排列,则:冒泡排序一趟扫描的结果是: HC QPAM SRDF X Y;初始步长为4的希尔(shell)排序一趟的结果是 P ACSQH FX RDMY;二路归并排序一趟扫描的结果是HQCYAPM SDRF X;快速排序一趟扫描的结果是FHCDPAMQR S YX;堆排序初始建堆的结果是 ADCRFQ MS YPH X。
/
本文档为【「第4-10章作业部分参考答案」】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索