哈弗曼樹的建立及其編碼

2021-05-25 18:57:31 字數 723 閱讀 3818

#include "stdio.h"

#define max 1000

#define maxsymbs 30

#define maxbits 10

#define maxnode 59

typedef struct

huffnode;

typedef struct

huffcode;

void main()

printf("input");

for(i=0;iscanf("%d",&huff_node[i].weight);

for(i=0;ielse}}

huff_node[x1].parent=n+i;

huff_node[x2].parent=n+i;

huff_node[x1].flag=1;

huff_node[x2].flag=1;

huff_node[n+i].weight=huff_node[x1].weight+huff_node[x2].weight;

huff_node[n+i].lchild=x1;

huff_node[n+i].rchild=x2;

}for(i=0;ifor(j=cd.start+1;j<=n;j++)

huff_code[i].bits[j]=cd.bits[j];

huff_code[i].start=cd.start;

}for(i=0;i}

哈弗曼編碼 哈弗曼樹

哈弗曼編碼是依賴於字元使用頻率來建立的一種編碼,通過把使用頻率低的字元分配相對較多的01編碼,而使用頻率高的分配相對較低的01編碼,來建立最小的帶權路徑長度的樹,來最大化的獲得編碼儲存空間的一種編碼規則。這個樹稱為哈弗曼樹,也稱為最優二叉樹。這樣可以確定每乙個字元的編碼不可能成為其他字元編碼的坐子串...

哈弗曼樹與哈弗曼編碼(實現)

歷史背景 1951年,霍夫曼在mit攻讀博士學位,他和修讀資訊理論課程的同學得選擇是完成學期報告還是期末考試。導師robert fano出的學期報告題目是 查詢最有效的二進位制編碼。由於無法證明哪個已有編碼是最有效的,霍夫曼放棄對已有編碼的研究,轉向新的探索,最終發現了基於有序頻率二叉樹編碼的想法,...

哈弗曼編碼

include include include define my strmax 100 define infinity 1000000 typedef struct htnode,huffmantree 動態分配陣列儲存赫夫曼樹 typedef char huffmancode 動態分配陣列儲存赫...