数据结构课程设计报告
template
HuaffmanTreeNode
}
template
void HuaffmanTreeNode
template
int HuaffmanTreeNode
template
void HuaffmanTreeNode
template
HuaffmanTreeNode
template
void HuaffmanTreeNode
//哈夫曼树类
#pragma once #include\#include\
3
0 数据结构课程设计报告
#include\
template
template
HuaffmanTree
template
HuaffmanTree
this->Root =NULL; }
template
HuaffmanTreeNode
*HuaffmanTree
*pa,
HuaffmanTreeNode
void SetRoot(HuaffmanTreeNode
HuaffmanTreeNode
void Display(HuaffmanTreeNode
void ShowNodeBit(LinkList
public:
并两个结点
31
数据结构课程设计报告
temp->SetLchild (pa); pa->SetTag (0); temp->SetRchild (pb); pb->SetTag (1); pa->SetFlag (true); pb->SetFlag (true);
} else { temp->SetLchild (pb); pb->SetTag (0); temp->SetRchild (pa); pa->SetTag (1); pa->SetFlag (true); pb->SetFlag (true); }
temp->SetData ('0');
temp->SetKey (pa->GetKey ()+pb->GetKey ()); pa->SetParent (temp); pb->SetParent (temp); return temp;
}
template
void HuaffmanTree
HuaffmanTreeNode
pa->SetParent(temp); pb->SetParent(temp);
if(pa->GetKey()>pb->GetKey()) { temp->SetLchild(pb); pb->SetTag(0); pb->SetFlag(true); temp->SetRchild(pa); pa->SetTag(1);
pa->SetFlag(true);
*temp=new
3
2 数据结构课程设计报告
} else { temp->SetLchild(pa); pa->SetTag(0); pa->SetFlag(true); temp->SetRchild(pb); pb->SetTag(1); pb->SetFlag(true);
}
L1.Insert (temp); pa=pb->GetNext (); if(pa==NULL) { this->SetRoot (pb); return ;
}
pb=pa->GetNext (); if(!pb) { this->SetRoot(pa); return;
}
}
}
template
void HuaffmanTree
return ;
this->Display(p->GetRchild(),n+1); for(int i=0;i if(p->GetData()=='0') cout< {cout< this->Display(p->GetLchild(),n+1); } template int *HuaffmanTree 3 3 数据结构课程设计报告 { Stack HuaffmanTreeNode current=current->GetNext(); } if(current) { while(current->GetParent ()) { s.push(current->GetTag()); current=current->GetParent(); } } int i=0; while(!s.Empty()) { qu.EnQueue (s.pop()); i++; } return integer; } template HuaffmanTreeNode return current; current=current->GetNext(); } return NULL; } template void HuaffmanTree int i=0; 3 4