資源簡介
根據香農編碼,費諾編碼和哈夫曼編碼的最佳編碼思想,運用C語言或Matlab語言任選2個給予分別實現,其中哈夫曼編碼必選.
基本要求(15):
1.輸入任意個數的信源符號
2.輸入任意大小的概率分布(ΣPi=1)
3.哈夫曼編碼給出方式選擇
4. 輸出編碼結果
5.輸出信源熵,平均碼長,編碼效率等
6.編程加注解
附加要求(5):
1.能實現哈夫曼多進制(元)編碼(3進制)
或 2.能實現哈夫曼多重(擴展)編碼(2重,信源2-3個符號)
代碼片段和文件信息
?#include?
?#include?
?#define?MaxSize?100
?typedef?char?ElemType;?
?typedef?struct
?{
?????ElemType?data[MaxSize];
?????double?weight;?????????????????/*葉子權重,信源概率*/
?????int?parent;????????????????/*父親節點*/
?????int?lchild;????????????????/*左孩子節點*/
?????int?rchild;???????????????/*右孩子節點*/
?}?HTNode;
?typedef?struct
?{
?????char?cd[MaxSize];???????????/*存放編碼用*/
?????int?start;
?}?HCode;???
?void?CreateHT(HTNode?ht[]int?n)?????????????????/*構造哈夫曼樹子程序*/
?{
?????int?ijk;
????int?lnodernode;?????????????/*節點*/
?????double?min1min2;
?????for(i=0;i<2*n-1;i++)???????????????/*進行2*n-1次合并*/
?????ht[i].parent=ht[i].lchild=ht[i].rchild=-1;
????for(i=n;i<2*n-1;i++)
????{
?????????min1=min2=32767;
?????????lnode=rnode=-1;
?????????for(k=0;k<=i-1;k++)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3914??2008-12-15?18:13??鄭旅軍?0656061?哈夫曼編碼完成版\huffman.c
?????文件?????213093??2008-12-15?18:50??鄭旅軍?0656061?哈夫曼編碼完成版\huffman.exe
?????文件???????9488??2008-12-15?18:50??鄭旅軍?0656061?哈夫曼編碼完成版\huffman.obj
?????文件???????2679??2008-12-13?20:23??鄭旅軍?0656061?香農編碼完成版\xn.c
?????文件?????217182??2008-12-15?18:46??鄭旅軍?0656061?香農編碼完成版\xn.exe
?????文件???????8935??2008-12-15?18:46??鄭旅軍?0656061?香農編碼完成版\xn.obj
?????目錄??????????0??2008-12-15?18:51??鄭旅軍?0656061?哈夫曼編碼完成版
?????目錄??????????0??2008-12-15?18:50??鄭旅軍?0656061?香農編碼完成版
?????文件?????159232??2008-12-15?18:42??信息論與編碼課程期中作業報告.doc
-----------?---------??----------?-----??----
???????????????614523????????????????????9
- 上一篇:c++酒店點菜系統
- 下一篇:C語言 Basler相機開發包
評論
共有 條評論