贪心算法实现

本文介绍了使用贪心算法解决文件压缩问题的Huffman编码。通过详细步骤展示了如何构建Huffman树,并提供了C语言实现程序,包括字符编码、用户输入编码和解码的过程。
摘要由CSDN通过智能技术生成

一. 给出解决文件压缩问题的贪心算法

 

Algorithm -HUFFMAN

 

输入:  n个字符的集合C={c1,c2,,cn}和它们的频度{f(c1),f(c2),,f(cn)}.

输出:  CHuffman (V,T)

1.根据频度将所有字符插入最小堆H

2. VßC; T={}

3. for j=1 to n-1

4. c=DELETEMIN(H)

5. c’=DELETEMIN(H)

6. f(v)=f(c)+f(c)        { v 是一个新节点}

7. INSERT(H,v)

8. V=V {v}    { 添加v  V}

9. T=T {(v,c),(v,c)}    { 使cc成为Tv的孩子}

   10. end for

 

二.  程序实现上述算法(附:程序源代码)

(1)哈夫曼树的表示

设计哈夫曼树的结构体(htnode),其中包含权重、左右孩子、父母和要编码的字符。用这个结构体(htnode)定义个哈夫曼数组(hfmt[])。

迷宫定义如下:

typedef struct

{

      int weight;

      i

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值