小弟才学习,不怕大家骂我垃圾,用C语言编个帮我~~~

来源:百度知道 编辑:UC知道 时间:2024/05/12 15:49:28
一直某系统在通信联络中只可能出现8种字符,起概率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试设计哈夫曼编码
我现在等程序急用,哪个大大能用C语言编个~

找最小的两个相加得到的和与其他各数放在一起,再找最小的两个相加
如此知道最后加成一个数,就是根节点

为了方便找最小的,可以对它进行排序:
0.03,0.05,0.07,0.08,0.11,0.14,0.23,0.29
最小的两个是:0.03+0.05=0.08
再排序:
0.07,0.08,(0.08),0.11,0.14,0.23,0.29
最小的两个是:0.07+0.08=0.15
再排序:
(0.08),0.11,0.14,(0.15),0.23,0.29
最小的两个是:0.08+0.11=0.19
再排序:
0.14,(0.15),(0.19),0.23,0.29
最小的两个是:0.14+0.15=0.29
再排序:
(0.19),0.23,0.29,(0.29)
最小的两个是:0.19+0.23=0.42
再排序:
0.29,(0.29),(0.42)
最小的两个是:0.29+0.29=0.58
再排序:
(0.42),(0.58)
最小的两个是:0.42+0.58=1.00
再排序:1.00

由此可以画出二叉树:
_________________(1.00)___________________
________________/______\__________________
___________(0.42)______(0.58)_____________
___________/____\______/____\_____________
_______(0.19)_(0.23)_(0.29)_(0.29)________
_______/____\_______________/____\________
____(0.08)_(0.11)_______(0.14)_(0.15)_____
____/____\____________________