哈夫曼树的建立与操作
- 格式:doc
- 大小:38.00 KB
- 文档页数:4
实验六哈夫曼树的建立与操作
一、实验要求和实验内容
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型能达到的最大的值)