问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构哈夫曼编码问题,请高手帮忙

发布网友 发布时间:2022-04-25 16:58

我来回答

1个回答

热心网友 时间:2023-10-20 22:00

用c编的程序如下

#include <iostream.h>

#define MAX 21

typedef struct

{

 char data;    //节点值

 int weight;   //权重

 int parent;   //父节点

 int left;

 int right;

} huffnode;

typedef struct

{

 char cd[MAX];

 int start;

}huffcode;

void main()

{

 huffnode ht[2*MAX];

 huffcode hcd[MAX],d;

 int i,k,f,l,r,n,c,m1,m2;

 cout<<"元素个素:";

 cin>>n;

 for (i=1;i<=n;i++)

 {

  cout<<"第"<<i<<"个元素=>\t节点值:";

  cin>>ht[i].data;

  cout<<"\t\t权  重:";

  cin>>ht[i].weight;

 }

 for (i=1;i<=2*n-1;i++)

  ht[i].parent=ht[i].left=ht[i].right=0;

 for (i=n+1;i<=2*n-1;i++)   //构造HUFFMAN树

 {

  m1=m2=32767;     //l和r为最小权重的两个节点位置

  l=r=0;

  for(k=1;k<=i-1;k++)

   if(ht[k].parent==0)

    if(ht[k].weight<m1)

    {m2=m1;

    r=l;

    m1=ht[k].weight;

    l=k;

    }

    else if(ht[k].weight<m2)

    {

     m2=ht[k].weight;

     r=k;

    }

    ht[l].parent=i;

    ht[r].parent=i;

    ht[i].weight=ht[l].weight+ht[r].weight;

    ht[i].left=l;

    ht[i].right=r;

    }

 for (i=1;i<=n;i++)  //根据huffman树求huffman编码

 {

  d.start=n+1;

  c=i;

  f=ht[i].parent;

  while (f!=0)

  {

   if(ht[f].left==c)

    d.cd[--d.start]='0';

   else

    d.cd[--d.start]='1';

   c=f;

   f=ht[f].parent;

  }

  hcd[i]=d;

 }

 cout<<"输出huffman编码:\n";

 for(i=1;i<n;i++)

 {

  cout<<" "<<ht[i].data<<":";

  for (k=hcd[i].start;k<=n;k++)

   cout<<hcd[i].cd[k];

  cout<<endl;

 }

}

运行结果见图片

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 哈夫曼树及哈夫曼编码的C程序实现(数据结构题) 算法与数据结构哈夫曼编码及应用 数据结构,第二题,哈夫曼编码, 过程详细说明一下,谢谢 一个关于数据结构的问题,有关哈夫曼编码的,解答看不懂,求解答,谢谢! 数据结构之哈夫曼编码 求解,关于数据结构的哈夫曼编码的问题 利用 数据结构 实现 哈夫曼编码/译码实现 数据结构中的哈夫曼编码 哈夫曼编码的原理是什么? 氢气球到底是氢气还是氮气 氢气球一般能挺多久 氢气球是什么做得? 世界上第一个也是最原始的氢气球是谁制作的? 氢气球有毒吗? 氢气球的是如何被研制出来的? 氢气球原理 谁发明了氢气球? 氢气球到底是氢气还是氮气? 陌陌怎么充值到微信零钱里 陌陌充值会员微信支付 一道关于求哈夫曼编码的数据结构题,求解答 qq背景墙图片带(我非良人)4个字的,求图, c++数据结构哈夫曼编码问题 数据结构(C语言)-哈夫曼编码求助!! QQ个性背景墙的图片。要多点类似这样的。反正只要好看就可以。推荐多点哦。 数据结构哈夫曼编码流程图 哈夫曼编/译码器 数据结构实践题 C语言,数据结构,哈夫曼编/译码器 用这个做QQ背景墙,能反映出他是个怎样的人,求解 vivo手机通话录音保存在哪里可以找到 vivo手机怎么找电话录音? 用vivo手机打电话时一边打一边录音,但是找不到录音的音频文件? 电话的通话录音,录完后到那里去找出来重放啊? 美元指数上涨现货黄金就会下降,为什么黄金和美元指数一直呈现负相关的关系呢? vivo Xm手机通话录音在哪里存放? 美元指数和黄金T+D有怎样的关系,比如,美元指数98.2对应黄金多少元每克 美元指数与外汇黄金什么关系 美元指数对现货黄金和白银有什么影响 如何理解美元指数与黄金的负相关的关系 美元指数和黄金的走势是成什么关系的,什么情况下会同涨或者同跌?