问题:事情总是这样,当你明白时,很简单,但当你不会时,又好像觉得自己怎么那么笨。。。
huffman算法关键是选择两个最小的数时不要弄错了。
刚开始看时,真的很吃力,都不敢相信自己居然把huffman译码也做出来了。
代码:
#include#include #include using namespace std;int s1,s2;typedef struct huffmanNode{ int weight; int parent; int lchild; int rchild;}*HuffmanTree;typedef struct weight{ char c; int wt;}*wt;typedef char** HuffmanCode;void select(HuffmanTree ht,int i);void CreateHT(HuffmanTree &ht,HuffmanCode &code,wt w,int n) //编码{ int m,i,j,start; char *cd; if(n<1) return; m=2*n-1; ht=(HuffmanTree)malloc((m)*sizeof(struct huffmanNode)); for(i=0;i =0;k--) { if(code[j][k]=='0') f=ht[f].lchild; else f=ht[f].rchild; } for(m=0;m >n; w=(wt)malloc(n*sizeof(struct weight)); cout<<"请输入各字符的权重:"< >w[i].c>>w[i].wt; } cout<<"创建哈夫曼树:"<
运行结果: