HuffmanTree::HuffmanTree() { MinHeap<HufTreeNodePtr> M; int calcu[26]={0};//0->a HufTreeNode *p; HufTreeNodePtr ptr; char c[100]; cout<<"请输入以#结尾的一串小写英文序列"<<endl; cin>>c; int i=0; while (c[i]!='#') { calcu[c[i]-'a']++; i++; } for (int i=0;i<26;i++) { if (calcu[i]==0) continue; cout<<calcu[i]<<' '<<(char)('a'+i)<<endl;///////////////////////////////// p=new HufTreeNode(calcu[i],'a'+i); ptr.p=p; M.Put(ptr); } HufTreeNodePtr ptra,ptrb; while (M.Length()>1) { ptrb=M.Remove(); ptra=M.Remove(); ptr.p=new HufTreeNode(ptra.p->weight+ptrb.p->weight); ptr.p->leftChild=ptra.p; ptr.p->rightChild=ptrb.p; M.Put(ptr); } root=M.Front().p; }