帮忙做题,高分!!!

来源:百度知道 编辑:UC知道 时间:2024/07/08 14:53:15
数据结构课程设计
题目 哈夫曼编/译码器
【问题描述】利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对传输数据预先编码,在接收端将传来的数据进行译码。对于双工信道,每端都需要一个完整的编/译码系统。试为这样的通信端编写一个哈夫曼编/译码系统。
【基本功能】
一个完整的系统应具有以下功能:
初始化:输入一串字符(正文),计算不同字符 (包括空格)的数目以及每种字符出现的频率(以该种字符出现的次数作为其出现频率),根据权值建立哈夫曼树,输出每一种字符的哈夫曼编码。
编码:利用求出的哈夫曼编码,对该正文(字符串)进行编码,并输出。
译码:对于得到的一串编码,利用已求得的哈夫曼编码进行译码,将译出的正文输出。
输出哈夫曼树形态:以树的形式输出哈夫曼树。
【运行流程】

【测试数据】
1.初始化:
① 输入正文“there are three students”
② 统计字符出现次数并输出
字符 a d e h n r s t u 空格
次数 1 1 6 2 1 3 2 4 1 3
③ 根据字符出现次数求出哈夫曼编码并输出(根据算法差异得到的编码可能不同,但应具有两个特征,一是编码长度应与表中相同,二是编码应该是前缀编码)
字符 a d e h n r s t u 空格
次数 0000 0001 01 1110 0010 100 1111 110 0011 101
④ 以树的形式输出哈夫曼树
2.编码:
发送方利用得到的哈夫曼编码对正文进行编码,输出密文应为:
11011100110001101000010001101110111010001011011111110001100010100101101111
3.译码:
接收方利用哈夫曼编码对密文进行译码,输出译后的字符串应为:
there are three students
一定要用C语言编写!!!!!!!
.标识符名称(常量、变量、函数、类等等)应该具有描述性,便于理解。

呵呵
我也才刚刚学完数据结构,才考完试
我不能帮你好多
构造哈夫曼树的基本思想和方法

基本思想是使使用的代码尽量少

基本方法:

利用完全二叉树来构造


/ \
② ③
/ \
④ ⑤
/ \
⑥ ⑦
把运用出现频率最高的那个部分放在最上面,也就是编码最少的了撒。例如③它的编码就是0,左孩子分支取1,右孩子分支取0,每多一个分支就把所对应0/1加上去。比如⑤的编码就是10,④的编码是11

先坐下,慢慢看...

#include<iostream>
using namespace std;
int main()
{cout<<"there are three students"<<endl;
return 0:}