我是從《資料結構與演算法 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....