#include<stdio.h>
#define max 100
#define n 5
typedef struct No{
double weight;
int lchild,rchild,parent;
} hufmNode;
hufmNode tree[n];
void creathufm()
{
int i,j,p1,p2;
double min1,min2;
for(i=0;i<n*2-1;i++){//初始化
tree[i].lchild=0;
tree[i].rchild=0;
tree[i].parent=0;
tree[i].weight=0;
}
for(i=0;i<n;i++) //父节点的位置
scanf("%lf",&tree[i].weight);
for(i=n;i<2*n-1;i++){//找出子节点最小的两个
min1=min2=max;
p1=p2=0;
for(j=0;j<i;j++)
if(tree[j].parent==0)//选没有父亲的节点
if(min1>tree[j].weight){
p2=p1;
min2=min1;
p1=j;
min1=tree[j].weight;
}
else if(tree[j].weight>min2){
p2=j;
min2=tree[j].weight;
}
tree[j].lchild=p1+1;//分别写入左右孩子,和父亲
tree[j].rchild=p2+1;
tree[p1].parent=i+1;
tree[p2].parent=i+1;
tree[j].weight=tree[p1].weight+tree[p2].weight;
}
for(i=0;i<2*n-1;i++)
printf("%.2lf ",tree[i].weight);
}
main()
{
creathufm();
return 0;
}
分享到:
相关推荐
哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树
哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树哈弗曼树
在C语言下实现哈弗曼树的创建并进行哈弗曼编码,同时输出哈弗曼编码。
哈弗曼树的建立 C++代码 哈弗曼树的建立 C++代码
哈弗曼树哈弗曼树!哈弗曼树哈弗曼树哈哈弗曼树弗曼树
关于哈弗曼树的一个算法,用哈弗曼算法存储树
哈弗曼树C++源代码 运行已通过 呵呵 希望对大家有所帮助
用哈弗曼树进行文件压缩与解压,学习数据结构时可结合进行更深刻理解
哈弗曼树 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树 C++实现哈弗曼树
构造一哈弗曼树并进行哈弗曼编码的源代码。
void output(HT *T,int m) { int i,j; for(i=1;i;i++) { cout第"个节点"; cout[i].weight; cout[i].parent; cout[i].lchild; cout[i].rchild; for(j=0;j;j++) { cout[i].code[j]; } cout;...}
哈弗曼树 数据结构课程设计 哈弗曼编码 哈弗曼树的建立
用哈弗曼树的算法来对txt文件和doc文件进行压缩,并且可以解压
数据结构 哈弗曼树的编译码 课程设计 实验报告.pdf数据结构 哈弗曼树的编译码 课程设计 实验报告.pdf数据结构 哈弗曼树的编译码 课程设计 实验报告.pdf数据结构 哈弗曼树的编译码 课程设计 实验报告.pdf数据结构 ...
数据结构 哈弗曼树的编译码 课程设计 实验报告.docx数据结构 哈弗曼树的编译码 课程设计 实验报告.docx数据结构 哈弗曼树的编译码 课程设计 实验报告.docx数据结构 哈弗曼树的编译码 课程设计 实验报告.docx数据结构...
这是用C++编写的哈弗曼树的解码与编码,课程设计。自己做的,很完善,希望大家会喜欢。
c语言数据结构哈弗曼树编码的源代码.该程序通过结构体和静态三叉链表实现对哈弗曼树的构造和输出的功能。开发工具采用Visual C++6.0
数据结构实习 哈弗曼树实现压缩 运用MFC 实现文件压缩功能 运用VC2005完成的
该代码用c++实现了哈弗曼树的建立及哈弗曼编码的生成,属于数据结构二叉树部分!
哈弗曼编码译码 哈弗曼树的建立,编码 对26个大写英文字母以及空格键的编码,译码