首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸对应栏内。 【说明】 Huffman树又称最优二叉树,是一类带权路径长度最短的树,在编码中应用比较广泛。 构造最优二叉树的Huffman算法如下: ①根据给定的n各权值{w1,w2,…,wn}构成
阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸对应栏内。 【说明】 Huffman树又称最优二叉树,是一类带权路径长度最短的树,在编码中应用比较广泛。 构造最优二叉树的Huffman算法如下: ①根据给定的n各权值{w1,w2,…,wn}构成
admin
2014-10-11
30
问题
阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸对应栏内。
【说明】
Huffman树又称最优二叉树,是一类带权路径长度最短的树,在编码中应用比较广泛。
构造最优二叉树的Huffman算法如下:
①根据给定的n各权值{w
1
,w
2
,…,w
n
}构成n棵二叉树的集合F={T
1
,T
2
,…,T
n
},其中每棵树T
i
中只有一个带权为w
i
的根节点,其左右子树均空。②在F中选取两棵根节点的权值较小的树作为左右子树,构造一棵新的二叉树,置新构造二叉树的根节点的权值为其左右子树根节点的权值之和。③从F中删除这两棵树,同时将新得到的二叉树加入到F中。重复②③,直到F中只剩一棵树为止。函数中使用的预定义符号如下:
#detineINT—MAX 10000
#define ENCODING—LENGTH 1000
typedef enum(rlone, 1eft一child, right一child) which;
/*标记是左孩子还是右孩子*/
typedef char Elemtype;
typedef struct TNode{//Huffman树节点
Elemtype letter;
int weight; //权值
int parent; //父节点
Which Sigh;
char*code; //节点对应编码
)HTNode,*HuffmanTree;
int n;
char coding[50];//储存代码
【函数】
void Select(HuffmanTree HT,int end,int*s1,int*s2)
/*在0~END之问,找出最小和次小的两个节点序号,返回s1、s2*/
{
int i;
int mini=INT_MAX;
int min2=INT_MAX;
for(i=0;i<=end;i++){/*找最小的节点序号*/
if((1)&&(HT
.weight
*s1=i;
minl=HT
.weight;
}
}
for(i=0;i<=end;i++){/*找次小节点的序号*/
i f((HT
.parent==0)&&((2))
&&(min2 >HT
.weight)){
*S2:i;
min2=HT
.weight:
}
}
}
void HuffmanTreecrea七(HuffmanTree&HT)/*建立HuFFMAN树*/
{
int i;
int m=2*n一1;
int S1,S2;
for(i=n;i
Select((3));
HT[S1].parent=i:
HT[s2].parent=i;
HT[S1].Sigh=1eft_chiid;
HT[s2].Sigh=right—chiid;
HT
.weight= (4);
}
void HuffmanTreeEnc。ding(char sen[],HuffmanTree HT)
{ /*将句子进行编码*/
int i=0;
int j;
while(sen
!=’\0’){
for(J=0;j
i f(HT[j].1etter==sen
)(/*字母匹配则用代码取代*/
strcat(coding, (5));
break;
}
}
i++:
if(sen
==32)i++;
printf(“\n%s”,coding);
}
选项
答案
(1)HT[i].parent==0 (2)*s1!=i (3)HT,i—1,&s1,&s2 (4)HT[s1].weight+HTIs2].weight (5)HT[j].code
解析
根据算法说明的②可知是根据根节点权值选择,即只考察根节点,而根节点对应~parent等于0,故空(1)应填HT
.parent=0。此答案可由空(2)处的i涤件容易得出。至于空(2),此处是找次小的,自然需要排除最小的,S1记录了最小树的下标,故填*s1!=i。仔细参照Select~数的定义,容易得出空(3)答案。应填“HT,i—l,&sl,&s2”,要注意的是后两个参数需要传递地址,因形参是指针。根据算法说明的②,“置新构造二叉树的根节点的权值为其左右子树根节点的权值之和”,而此处HT
的左右子树的根节点分别为HT[s1]和NHT[s2],所以空(4)应填HT[s1].weight+HT[s2].weight。由注释“字母匹配则用代码取代”可知,此处是将对应代码加到coding中,而节点的code字段存储了节点对应编码,故空(5)应填HT[j].code。
转载请注明原文地址:https://jikaoti.com/ti/EUi7FFFM
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
给出关系R(A,B,C)和S(A,B,C),R和S的函数依赖集F={A→B,B→C}。若R和S进行自然连接运算,则结果集有3个属性。关系R和S________。
_______是构成我国保护计算机软件著作权的两个基本法律文件。
阅读以下说明,回答问题1~5。[说明]SSL(SecureSocketLayer)是目前解决传输层安全问题的一个主要协议,其设计的初衷是基于TCP协议之上提供可靠的端到端安全服务,SSL的实施对于上层的应用程序是透明的。应用SSL协议最广泛
请认真阅读下列有关计算机网络防火墙的说明信息,回答问题1~5。[说明]某单位的内部局域网通过防火墙与外部网络的连接方式及相关的网络参数如下图所示。
阅读以下说明,回答问题1至问题5。[说明]某企业采用Windows2000操作系统部署企业虚拟专用网(VPN),将企业的两个异地网络通过公共Internet安全地互联起来。微软Windows2000操作系统当中对IPSec具备完善的支持,下图
该DHCP服务器可分配的IP地址有多少个?在Windows操作系统下,DHCP客户端“Internet协议(TCP/IP)属性”配置界面如下图所示。在此界面中,客户端应如何配置?
启动init进程前,不需要经过______步骤。A.LIIO加载内核B.检测内存C.加载文件系统D.启动网络支持根据上述inittab文件的内容,系统在引导过程结束前,至少还要执行______进程。A.rc.sy
启动init进程前,不需要经过______步骤。A.LIIO加载内核B.检测内存C.加载文件系统D.启动网络支持root用户执行psaux|grepinit命令,得到init的PID是______。A.0
网络设计流程通常由以下五个阶段组成:A.确定网络物理结构B.确定网络逻辑结构C.对现有网络的体系结构进行分析D.安装和维护E.需求分析根据网络开发设计的过程,给出上述五个阶段的先后排序:(1)。有线
公司网络中的设备或系统(包括存储商业机密的数据库服务器、邮件服务器、存储资源代码的PC、应用网关、存储私人信息的PC、电子商务系统)哪些应放在DMZ中,哪些应放在内网中?并给予简要说明。
随机试题
求不定积分∫sin4xcos3xdx
fronting
我们鼓励社会阶层自然分化,让不同阶层________,我们也鼓励鲤鱼跳龙门,但也应该看到能跃过龙门的“鲤鱼”毕竟是少数,这就需要构建更加公平正义的社会选择机制、甄别机制,只要是锥子,就可以冒出头,当然你也可以________,让自己冒出头。依次填入画横线部
关于吊顶的做法,错误的是()。
项目后评估一般按照()层次组织实施。
关于基金,下列说法正确的是( )。
被西方称为“现代艺术之父”的是________(国家)画家________,他是________画派的主要画家,该画派的主要画家还有________和________等。
某县上了一个工业项目,由于这个项目污染严重,导致当地群众多人集体上访。请回答以下两个问题:(1)你作为该县副县长,怎么处置群众上访事件?(2)对于这个工业项目,你怎么办?
排解不良情绪的合理而有效的方法有()。
WhichofthefollowingisTRUE?Whenhewasalittleboy,_______.
最新回复
(
0
)