为什么赫夫曼编码是不是都可以破解?
赫夫曼编码的破解既然已经公开了,那么还使用它干嘛呢比如:int W[N]={5,30,9,10,16,20,8,12};char C[N]={'A','B','C','D','E','F','G','H'};现在我提供一份已经 加密过的二进制字符串(采用赫夫曼编码加密的),大家就可以写算法来破解啊,那使用它干嘛呢???问题2: 这个函数的参数HCode是 指向 二进制"010011"这种字符串,还是"ABCD"这种形式的字符串void HuffmanDecoding(HuffmanTree HT,char chars[],int n,char *HCode,HuffmanDecode &HD){//根据赫夫曼编码表解码 int f; int i=0; char *p=HCode; //Huffman编码串工作指针 HD=(char *)malloc(strlen(HCode)*sizeof(char)); while(*p!='\0') { f=2*n-1; //从根出发进行匹配 while(HT[f].lchild!=0&&HT[f].rchild!=0&&*p!='\0') {//未到达叶端且编码串未处理完 if(*p=='0')f=HT[f].lchild; //向左孩子下行 else if(*p=='1')f=HT[f].rchild; //向右孩子下行 p++; //下一编码符号 } if(HT[f].lchild==0&&HT[f].rchild==0) //下行遇叶结点 HD[i++]=chars[f-1]; //得到该编码的字符 else return; //错误的编码,不能正确译码 } HD[i]='\0'; //译码字符串结束符}