huffman資料結構書上的

2021-08-11 04:49:32 字數 1053 閱讀 1396

#include/* int_max等 */

#include/* eof(=^z或f6),null */

#include

#include

#define max 100

typedef structhtnode,*huffmantree; /* 動態分配陣列儲存赫夫曼樹 */

typedef char **huffmancode; /* 動態分配陣列儲存赫夫曼編碼表 */

int min1(huffmantree t,int i)

void select(huffmantree t,int i,int *s1,int *s2)

}void huffmancoding(huffmantree &ht,huffmancode &hc,int num,int n)

for(;i<=m;++i,++p)

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

/* 從葉子到根逆向求每個字元的赫夫曼編碼 */

hc=(huffmancode)malloc((n+1)*sizeof(char*));

/* 分配n個字元編碼的頭指標向量([0]不用) */

cd=(char*)malloc(n*sizeof(char)); /* 分配求編碼的工作空間 */

cd[n-1]='\0'; /* 編碼結束符 */

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

free(cd); /* 釋放工作空間 */

}void detect(char s,char ch,int num)

}for(i=0;iprintf("\'%c\'對應的密碼是:\n",ch[i]);

}void main()

;//記錄每個字元出現的次數

printf("請輸入乙個密碼加密:\n");

scanf("%s",s);

detect(s,ch,num);

for(i=0;num[i]!='\0';i++)

huffmancoding(ht,hc,num,n);

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

puts(hc[i]);

資料結構 Huffman樹

參照書上寫的huffman樹的 結構用的是線性儲存的結構 不是二叉鍊錶 裡面要用到查詢最小和第二小 理論上錦標賽法比較好 但是實現好麻煩啊 考慮到資料量不是很大 就直接用比較笨的先找最小 去掉最小再找第二小的方法了。include include include typedef struct htn...

資料結構 Huffman樹

參照書上寫的huffman樹的 結構用的是線性儲存的結構 不是二叉鍊錶 裡面要用到查詢最小和第二小 理論上錦標賽法比較好 但是實現好麻煩啊 考慮到資料量不是很大 就直接用比較笨的先找最小 去掉最小再找第二小的方法了。include include include typedef struct htn...

資料結構Huffman編碼解碼

1 需求分析 1.1問題描述 問題描述 利用哈夫曼編碼進行通訊可以大大提高通道利用率,縮短資訊傳輸時間,降低傳輸成本。但是,這要求在傳送端通過乙個編碼系統對待傳資料預先編碼,在接收端將傳來的資料進行解碼 解碼 對於雙工通道 即可以雙向傳輸資訊的通道 每端都需要乙個完整的編 解碼系統。試為這樣的資訊收...