计算机考研专业课复习科目包括数据结构、操作系统、计算机组成原理、计算机网络四门课程。其中数据结构这一科目兼具理论与实践,要求同学们在复习过程中不仅要对教材的基本概念进行记忆,同时还要结合知识点掌握相应的实际操作知识。为帮助同学们在计算机专业课复习上卓有成效,中公考研将为同学们整理全面的考点梳理,今天为大家带来的是数据结构的相关内容,请同学们适当参考,结合自身实际在全面复习的基础上进行重点理解记忆。
Huffman译码
译码是编码的逆运算。设电文(二进制码)已存入字符型文件fch中,译码过程:根据编码时建造的H树和相应的Huffman编码,从H树的根(序号为m) 出发,逐个取电文中的二进制码,若当前二进制码=“0”,则走左子,否则走右子,一旦到达H树的叶结点,取相应叶结点中字符code[i].ch。重复上述译码过程,直到电文结束。算法如下:
void Transcode(HuffmTree HT[m+1],ctype code[n+1])
{ int i, chat c; FILE *fp;
if ((fp=fopen(“fch”,“r”))==NULL) Error(fch);
//打开文件fch,只读,文件指针?fp,打不开时出错处理//
i=m; //取H树根结点序号//
while ((c=fgetc(fp))!=EOF) //读入一个二进制码//
{
if(c= =‘0’)
i=HT[i].Lchild; //向左走//
else
i=HT[i].Rchild; //向右走//
if(HT[i].Lchild= =0) //HT[i]为叶子//
{ putchar (code[i].ch); //输出译出的字符//
i=m;
}
}
fclose(fp); //关闭文件fch//
if (HT[i].Lchild!=0) Error(HT); //电文结束i未达到叶结点,则电文有误//
}