l; } // 解码函数 void huffman::decode(char *s,char *d) { while(*s!='\0') { int parent=hn-1;// 根节点 while(htree[parent].lchild!=-1)// 从根节点开始到终端节点结束循环{ if(*s=='0') parent=htree[parent].lchild; else parent=htree[parent].rchild; if(*s=='\0')// 不解码码串最尾部,无编码部分{ cout<<endl<<" 尾端无编码!"<<endl; return; } s++; } *d=hcodetable[parent].data; d++; }} // 打印哈夫曼树 void huffman::printtable() { cout<<setiosflags(ios::left)<<setw(5)<<"n"<<setw(12)<<"weig ht"<<setw(12)<<"lchild"<< setw(12)<<"rchild"<<setw(12)<<"parent"<<setw(12)<<"char"<<s etw(12)<<"code"<<endl; for(int i=0;i<hn;i++) { if(i<(hn+1)/2) { cout<<setiosflags(ios::left)<<setw(5)<<i<<setw(12)<<htree[i] .weight<<setw(12)<<htree[i].lchild<< setw(12)<<htree[i].rchild<<setw(12)<<htree[i].parent<<setw( 12)<<hcodetable[i].data<<setw(12)<<hcodetable[i].code<<endl;