huffman编码已知:信源符号个数q,信源符号S0,.,Sq-1,信源概率分布P0,...,Pq-1,算法:1,如果q=2,则返回编码:s0->0,s1->12,否则a,重新排序S0,.,Sq-1,和P0,.Pq-1b,创建一个符号s’,其概率为P’=Pq-2+Pq-1c,递归调
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 02:30:50
![huffman编码已知:信源符号个数q,信源符号S0,.,Sq-1,信源概率分布P0,...,Pq-1,算法:1,如果q=2,则返回编码:s0->0,s1->12,否则a,重新排序S0,.,Sq-1,和P0,.Pq-1b,创建一个符号s’,其概率为P’=Pq-2+Pq-1c,递归调](/uploads/image/z/8896514-50-4.jpg?t=huffman%E7%BC%96%E7%A0%81%E5%B7%B2%E7%9F%A5%EF%BC%9A%E4%BF%A1%E6%BA%90%E7%AC%A6%E5%8F%B7%E4%B8%AA%E6%95%B0q%2C%E4%BF%A1%E6%BA%90%E7%AC%A6%E5%8F%B7S0%2C.%2CSq-1%2C%E4%BF%A1%E6%BA%90%E6%A6%82%E7%8E%87%E5%88%86%E5%B8%83P0%2C...%2CPq-1%2C%E7%AE%97%E6%B3%95%EF%BC%9A1%2C%E5%A6%82%E6%9E%9Cq%3D2%2C%E5%88%99%E8%BF%94%E5%9B%9E%E7%BC%96%E7%A0%81%EF%BC%9As0-%3E0%2Cs1-%3E12%2C%E5%90%A6%E5%88%99a%2C%E9%87%8D%E6%96%B0%E6%8E%92%E5%BA%8FS0%2C.%2CSq-1%2C%E5%92%8CP0%2C.Pq-1b%2C%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E7%AC%A6%E5%8F%B7s%E2%80%99%2C%E5%85%B6%E6%A6%82%E7%8E%87%E4%B8%BAP%E2%80%99%3DPq-2%2BPq-1c%2C%E9%80%92%E5%BD%92%E8%B0%83)
huffman编码已知:信源符号个数q,信源符号S0,.,Sq-1,信源概率分布P0,...,Pq-1,算法:1,如果q=2,则返回编码:s0->0,s1->12,否则a,重新排序S0,.,Sq-1,和P0,.Pq-1b,创建一个符号s’,其概率为P’=Pq-2+Pq-1c,递归调
huffman编码
已知:信源符号个数q,信源符号S0,.,Sq-1,信源概率分布P0,...,Pq-1,算法:1,如果q=2,则返回编码:s0->0,s1->1
2,否则
a,重新排序S0,.,Sq-1,和P0,.Pq-1
b,创建一个符号s’,其概率为P’=Pq-2+Pq-1
c,递归调用本算法以得到S0,.,Sq-3,S’的编码W0,.Wq-3,W’,它的概率副本为P0,.,Pq-3,P’
d,返回编码S0->W0,...,Sq-3—>Wq-3,Sq-2->W'0,Sq-1->W'1
要求输入信源符号的概率分布在运行时从键盘输入
输出:每个信源符号及其对应的码字.
huffman编码已知:信源符号个数q,信源符号S0,.,Sq-1,信源概率分布P0,...,Pq-1,算法:1,如果q=2,则返回编码:s0->0,s1->12,否则a,重新排序S0,.,Sq-1,和P0,.Pq-1b,创建一个符号s’,其概率为P’=Pq-2+Pq-1c,递归调
这是我们的作业题,自己写 的……(可能输入的格式跟你要的不一致,自己改一下)
如果有什么不懂的就问我,我可以把其中所有相关的文件发给你 ^^
注:1、 初始化创建哈夫曼树有三种选择,其中选择编译课本测试数据时和编译源文件是,调用的输入文件分别是:test.txt和input.txt;字母的哈夫曼编码都保存在文件:hmfTree.txt;
2、 用户自定义模式下,需要编码的文件内容保存在ToBeTran.txt中;课本测试数据和源文件代码分别保存在course.txt和sorse.txt中,在(1)中选择不同的选项,则在编码时调用相应的文件进行编码,编码结果保存在文件CodeFile.txt中.
3、 文件译码时,调用文件CodeFile.txt进行译码,得到的结果保存在文件TextFile.txt中.
4、 打印代码文件:调用CodeFile.txt,结果显示在终端并保存在文件CodePrin.txt中.
5、 打印哈夫曼树:用凹入表形式把哈夫曼树显示在终端,同时将它保存在文件TreePrint..txt中.
#include
#include
#include
#include
#include
using namespace std;
typedef struct {
unsigned int weight;
char ch1;
unsigned int parent,lchild,rchild;
}HTNode,*HuffmanTree;
typedef char **HuffmanCode;
typedef struct {
char ch;
char code[7];
}codenode,*code;
void select(HuffmanTree HT,int n,int & s1,int &s2){ //从哈夫曼树中选择出最小的两个节点
for(int i=1;i