c語言實現夏農編碼

2021-08-19 10:47:09 字數 767 閱讀 9404

1、設計思想

為了設計的方便,我們需要在這個程式裡設計乙個結構體,以用來儲存信源符號、信源符號概率等引數,將每一組引數看成乙個結構體來看待,這樣我們就可以隨時地呼叫。

2、設計流程

主函式部分,我們先接收要輸入的信源符號個數,再接收每個信源符號的名稱以及他的概率。

主函式設計好後,我們將各功能的函式分成幾個模組來寫,第乙個是排序函式,如果你堅持從大到小輸入則可以不用寫;第二個函式計算前幾個符號概率的累加;第三個函式計算每個符號碼字長度;第四個函式將累加概率轉換為二進位制。各個函式分工完成的話,問題就變得簡單多了。

我們來簡單繪製一下其流程圖:

3、設計程式

#include #include #include int i,j,n,k,b;

float a;

char bitw[20];

struct shan

data[12];

void sequ(struct shan x,int n)

else x[i].l=(int)x[i].l_f;

}}void covbit(float d,int lc)

{ for(j=0;j4、設計結果

參考:

行程編碼c語言實現

題目要求 如一字串為aaaaaabcccc12344 有6個a,則編碼為6a,對於單個出現的字元,如b,則以1開始和結束對其編碼成 1b1 對不重複的字串如123,要以1開頭,1結尾 編為11231 且不重複字串中若含有1,在前述基礎上在其前面再加1,最後為111231,最終編碼為6a1b14c11...

夏農編碼python實現

依舊是資訊理論的作業,就放上來記錄一下!import math n int input 請輸入信源符號的個數 p 碼字概率 p sum 累加概率 p len 碼字長度 ex code a 0 b 0for i in range 1 n 1 c input 請輸入第 str i 個信源符號的概率 p....

C語言實現哈夫曼編碼

include define n5 葉子數目 define m 2 n 1 結點總數 define maxval 10000.0 define maxsize100 哈夫曼編碼的最大位數 typedef struct hufmtree typedef struct codetype void huf...