还剩1页未读,继续阅读
文本内容:
#includestring.h#includestdlib.h#includestdio.hint ms1s2;typedef struct { unsigned int weight; unsigned int parentlchildrchild;}HTNode*HuffmanTree; //动态分配数组存储哈夫曼树typedef char *HuffmanCode; //动态分配数组存储哈夫曼编码表void SelectHuffmanTree HTint n { int ij; fori = 1;i = n;i++ if!HT[i].parent{s1 = i;break;} forj = i+1;j = n;j++ if!HT[j].parent{s2 = j;break;} fori = 1;i = n;i++ ifHT[s1].weightHT[i].weight!HT[i].parents2!=is1=i; forj = 1;j = n;j++ ifHT[s2].weightHT[j].weight!HT[j].parents1!=js2=j;}void HuffmanCodingHuffmanTree HT HuffmanCode HC[] int *w int n { // 算法
6.13 // w存放n个字符的权值均0,构造哈夫曼树HT, // 并求出n个字符的哈夫曼编码HC int i j; char *cd; int p; int cdlen;if n=1 return; m = 2 * n - 1; HT = HuffmanTreemallocm+1 * sizeofHTNode; // 0号单元未用 for i=1; i=n; i++ { //初始化 HT[i].weight=w[i-1]; HT[i].parent=0; HT[i].lchild=0; HT[i].rch...。