计算机考研专业课复习科目包括数据结构、操作系统、计算机组成原理、计算机网络四门课程。其中数据结构这一科目兼具理论与实践,要求同学们在复习过程中不仅要对教材的基本概念进行记忆,同时还要结合知识点掌握相应的实际操作知识。为帮助同学们在计算机专业课复习上卓有成效,中公考研将为同学们整理全面的考点梳理,今天为大家带来的是数据结构的相关内容,请同学们适当参考,结合自身实际在全面复习的基础上进行重点理解记忆。
由此写出构造H树的C语言描述算法:
void HuffmTree (huffm HT[m+1] ) //构造H树的算法//
{
int i, j, p1, p2; int w, s1, s2;
for (i=1,i<=m,i++) //初始化//
{
HT[i]. wi=0;
HT[i].parent=0;
HT[i].Lchild=HT[i].Rchild=0;
}
for (i=1; i<=n; i++)
scanf(“%d”,& HT[i]. wi ); //读入权值//
for (i=n+1; i<=m; i++) //进行n-1次循环,产生n-1个新结点,构造H树//
{
p1=p2=0; //p1、p2 为所选权值最小的根结点序号//
s1=s2=max; //设max为机器能表示的最大整数//
for(j=1;j<=i-1;j++) //从HT[1]~HT[i-1]中选两个权值最小的根结点//
if (HT[j].parent==0)
if (HT[j]. wi
{ s2=s1; p2=p1; //以j结点为第一个权值最小的根结点//
s1=HT[j].wi; p1=j;
}
else if (HT[j].wi
{
s2=HT[j].wi ;
p2=j; //以j为第二个权值最小的根//
}
HT[p1].parent=HT[p2].parent=i; //构造新树//
HT[i].Lchild=p1; HT[i].Rchild=p2;
HT[i].wi =HT[p1].wi +HT[p2].wi; //权值相加送新结点//
}
}
求Huffman编码的算法:
typedef struct
{ char bits[n+1]; //存放一个字符的Huffman编码
int start; //存放该字符编码的最后一个位置
char ch; //待编码字符//
}ctype;
void Huffmcode(ctype code[n+1]) //求n个字符的Huffman编码的算法//
{
int i, j, p, s; huffm HT[m+1]; //H树存储空间//
ctype md; //存放当前编码的变量//
for (i=1;i<=n; i++) //读入待编码的字符//
HT[i].data=code[i].ch=getchar( );
//从叶子到根逆向求每个字符的哈佛满编码
HuffmanTree(HT); //构造H树//
for (i=1;i<=n;i++) //求n个字符的Huffman编码//
{
md.ch=code[i].ch;
md.start=n-1; //就算是单支树最多也就是 n-1
s=i; //第i个字符地址(或下标)?s//
p=HT[i].parent; //p为s之父结点地址//
while (p!=0) //p存在时//
{
md.start-- ;
if (HT[p].Lchild= =s)
md.bits[md.start]=‘0’; //左走一步为‘0’//
else
md.bits[md.start]=‘1’ ; //右走一步为‘1’//
s=p;
p=HT[p].parent; //求下一位//
}
strcpy(code[i],md) ; //存入第i字符的编码//
}
}
以上就是中公考研与考生分享的2016考研计算机冲刺考点梳理,希望同学们能广泛参考复习资料,同时结合自身的复习情况,找准方法,取得复习的超高效率和良好效果。