哈夫曼編碼 C

2021-06-06 06:19:13 字數 2582 閱讀 5281

我是從《資料結構與演算法 c#語言描述》這本書裡面抄的 , 程式可以正常執行

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace 哈夫曼編碼1

public huffmantree lchild

set

}public huffmantree rchild

set

}public string letter

set

}public int freq

set

}public void incfreq()

}}

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace 哈夫曼編碼1

}}

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace 哈夫曼編碼1

}signtable = new string[list.count];

keytable = new string[list.count];

}public string getsigntable()

public string getkeytable()

public void addletter(string letter)

else

count++;

}public void sorttree()

}}//按照權重(freq)公升序排列}}

/// /// 去掉結點

///

/// 去掉的結點

public huffmantree removetree()

return null;

}/// /// 插入結點

///

/// 等待插入的結點

public void inserttree(huffmantree htmp)

else

p = p.link;

}etmp.link = p.link;

p.link = etmp;

}count++;

}/// /// 合併成一棵樹

///

public void mergetree()}}

public int lenght()

/// /// 增加字元

///

/// 等待增加的字元

public void addsign(string str)

node tmp = first;

while (tmp != null)

tmp = tmp.link;

}addletter(str);

}static public string translate(string original)}}

return newstr;

}static int pos = 0;

static public void makekey(huffmantree tree, string code)

else}}

}

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace 哈夫曼編碼1

treelist.sorttree();

while (treelist.lenght() > 1)

treelist.makekey(treelist.removetree(), "");

string newstr = treelist.translate(input);

string signtable = treelist.getsigntable();

string keytable = treelist.getkeytable();

for (int i = 0; i < signtable.length; i++)

console.writeline("the original string is " + input.length * 16 + "bits long . ");

console.writeline("the new string is " + newstr.length + "bits long . ");

console.writeline("the coded string looks like this : " + newstr);

console.read();}}

}

c 哈夫曼編碼

哈夫曼編碼的基本步驟 1 把概率最小的兩個符號組成乙個新的節點 2 重複步驟,直到概率和為1 3 總根節點開始到相應於每個符號的 樹葉 概率大的標 1 概率小的標 0 4 從根節點開始,對符號進行編碼 1 定義結構體 typedef struct htnode typedef struct htno...

C 哈夫曼編碼

include include include include define hfmlenth 999 define maxcode 10 待輸入字串 char str hfmlenth 編碼 intcode hfmlenth 哈夫曼樹的葉子數 其他節點數 根節點 最大深度 int orilenth...

哈夫曼編碼 哈夫曼樹

1.定義 哈夫曼編碼主要用於資料壓縮。哈夫曼編碼是一種可變長編碼。該編碼將出現頻率高的字元,使用短編碼 將出現頻率低的字元,使用長編碼。變長編碼的主要問題是,必須實現非字首編碼,即在乙個字符集中,任何乙個字元的編碼都不是另乙個字元編碼的字首。如 0 10就是非字首編碼,而0 01不是非字首編碼。2....