文章目录
一、C语言能干大事
- 一、C语言能干大事
- 1. C语言下Huffman树的计算过程分析
- 2. C语言下Huffman树的编程
- 二、C#语言也不赖
- 1. C#下Huffman类的设计
- 2. C#中界面设计
- 3. 建立测试数据并显示Huffman树
- 4. 输入任意一组数据,完成构造Huffman树
- 三、JavaScript语言不爱听了
- 1. JavaScript下Huffman类的设计
- 2. 把权重数据显示在一个表格里
- 3. 为表格添加命令按钮
- 4. 编写添加一行的程序
- 5. 编写删除一行的程序
- 6. 用表格中的数据生成Huffman树表
- 7. 显示Huffman树表中的树
例1 有权重集合分别是:5、29、7、8、14、23、3、11,计算Huffman树。
这个题目的计算过程如下:
(1)首先是把数据填写在以下表格里:
这个在编程中一定注意:空白格子里是NULL,这点不要搞错。
首先是寻找到两个最小权重的结点,找到的是第7、1号结点,权重合计是8,我们先标记这两个结点s=1(代表已经处理过了),并生成第9号结点,权重是8,并让第7、1号结点的父结点是9,第9号结点的左、右孩子分别是第7、1结点,就是如下表:
重复上面的过程,从头寻找s=0的结点里、权重最小的两个结点、就是第3、4号结点,权重合计是15,这样,标记这两个结点s=1,并生成第10号结点,权重是15,而第7、8的父结点是第10号结点,第10号结点的左右孩子是第3、4号结点,就是下表:
重复这个过程,处理到第15个结点,使其权重合计为100,就是:
最终这个树的计算到此结束,在这样的表中计算出的过程以及结果,就是我们下面编程的主要依据。
针对前面介绍的表格,用C语言描述这样的表就是:
struct Huffman
{
int W,Parent,lChild,rChild,S;
};
对Huffman树,由于它是正则二叉树,所以有n个权重数据则必然有2*n-1个树结点。
有了表的C语言定义,则首先是寻找未标记的、权重最小的结点,如果这个表是H,则全部代码就是:
int FindMinNode(struct Huffman *H,int N)
{
int i,W,Node;
W=100;Node=0;
if(H==NULL) return -1;
for(i=0;i0&&H[i].W
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?