哈夫曼树的建立与操作
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六哈夫曼树的建立与操作
一、实验要求和实验内容
1、输入哈夫曼树叶子结点(信息和权值)
2、由叶子结点生成哈夫曼树内部结点
3、生成叶子结点的哈夫曼编码
4、显示哈夫曼树结点顺序表
二、详细代码(内包含了详细的注释):
#include
using namespace std;
typedef char Elemtype;
struct element
{
int weight;
Elemtype date;
element* lchild,*rchild;
};
class HuffmanTree
{
public:
HuffmanTree()//构造函数
{
cout<<"请输入二叉树的个数"< cin>>count; element *s=new element[count];//s为指向数组的指针,保存指向数组的地址 for(int i=0;i { cout<<"输入第"< cin>>s[i].weight; cout<<"输入第"< cin>>s[i].date; s[i].lchild=NULL; s[i].rchild=NULL; }//以上为初始化每一个结点 element * *m=new element*[count];//m为指向数组成员的地址的指针,保存【指向数组成员地址的指针】的地址 for(int i=0;i { m[i]=s+i;//把数组成员i地址赋给m[i](m[i]大致意思等效于*m)} //以下为哈夫曼的构造过程 element*q; for(int i=0;i { int a=32767,b=32767;//a,b为两个存当前最小值的两个临时变量,初始化为32767(int型能达到的最大的值)