哈夫曼编译码器课程设计报告(完整版)Word文件下载.doc

上传人:b****9 文档编号:13071452 上传时间:2022-10-04 格式:DOC 页数:30 大小:317KB
下载 相关 举报
哈夫曼编译码器课程设计报告(完整版)Word文件下载.doc_第1页
第1页 / 共30页
哈夫曼编译码器课程设计报告(完整版)Word文件下载.doc_第2页
第2页 / 共30页
哈夫曼编译码器课程设计报告(完整版)Word文件下载.doc_第3页
第3页 / 共30页
哈夫曼编译码器课程设计报告(完整版)Word文件下载.doc_第4页
第4页 / 共30页
哈夫曼编译码器课程设计报告(完整版)Word文件下载.doc_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

哈夫曼编译码器课程设计报告(完整版)Word文件下载.doc

《哈夫曼编译码器课程设计报告(完整版)Word文件下载.doc》由会员分享,可在线阅读,更多相关《哈夫曼编译码器课程设计报告(完整版)Word文件下载.doc(30页珍藏版)》请在冰豆网上搜索。

哈夫曼编译码器课程设计报告(完整版)Word文件下载.doc

利用哈夫曼编码进行信息通信可大大提高信道利用率,缩短信息传输时间,降低传输成本。

要求在发送端通过一个编码系统对待传数据预先编码;

在接收端将传来的数据进行译码(复原)。

对于双工信道(既可以双向传输信息的信道),每端都需要一个完整的编/译码系统。

试为这样的信息收发站写一个哈夫曼的编/译码系统。

2.基本要求

系统应具有以下功能:

(1)C:

编码(Coding)。

对文件tobetrans中的正文进行编码,然后将结果存入文件codefile中,将以此建好的哈夫曼树存入文件HuffmanTree中

(2)D:

解码(Decoding)。

利用已建好的哈夫曼树将文件codefile中的代码进行译码,结果存入textfile中。

(3)P:

打印代码文件(Print)。

将文件codefile以紧凑格式显示在终端上,每行50个代码。

同时将此字符形式的编码文件写入文件codeprint中。

(4)T:

打印哈夫曼树(TreePrinting)。

将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件treeprint中。

3.参考资料:

数据结构(C语言版)严蔚敏、吴伟民编著;

数据结构标准教程胡超、闫宝玉编著

完成期限:

2012年6月21日

指导教师签名:

课程负责人签名:

2012年6月21日

一、设计题目(任选其一)

二、实验目的

1巩固和加深对数据结构的理解,提高综合运用本课程所学知识的能力;

2深化对算法课程中基本概念、理论和方法的理解;

3巩固构造赫夫曼树的算法;

4设计试验用程序实验赫夫曼树的构造。

三、运行环境(软、硬件环境)

Windowsxpsp3,VisualC++6.0英文版

四、算法设计的思想

(1)初始化赫夫曼树,输入文件tobetrans.txt中各字符及其权值,并保存于hfmtree.txt文件中

(2)编码(Coding)。

对文件tobetrans中的正文进行编码,然后将结果存入文件codefile中

(3)D:

(4)P:

(5)T:

将已在内存中的哈夫曼树以直观的方式显示在终端上,同时将此字符形式的哈夫曼树写入文件treeprint中。

五、流程图

六、算法设计分析

1.赫夫曼树节点的数据类型定义为:

typedefstruct{//赫夫曼树的结构体

charch;

intweight;

//权值

intparent,lchild,rchild;

}HTNode,*HuffmanTree;

2.voidHuffmanCoding(HuffmanTree&

char*,int*,int);

建立赫夫曼树的算法,此函数块调用了Select()函数。

voidselect(HuffmanTreeHT,intj,int*x,int*y);

从已建好的赫夫曼树中选择parent为0,weight最小的两个结点。

3.利用已建好的哈夫曼树从文件hfmtree.txt中读入,对文件中的正文进行编码,然后将结果存入文件codefile.txt中。

4.coding

编码功能:

对输入字符进行编码

5.Decoding

译码功能:

利用已建好的哈夫曼树将文件codefile.txt中的代码进行译码,结果存入文件textfile.txt中。

6.Print()打印功能函数:

输出哈夫曼树以及对应的编码。

七、源代码

//////////////////////////////////////////////////////////////////////////////////////////

#include<

stdio.h>

stdlib.h>

string.h>

//定义赫夫曼树结点的结构体

typedefstruct{

charch;

//增加一个域,存放该节点的字符

intweight;

intparent,lchild,rchild;

}HTNode,*HuffmanTree;

typedefchar**HuffmanCode;

//指向赫夫曼编码的指针

voidtips();

//打印操作选择界面

voidHuffmanCoding(HuffmanTree&

//建立赫夫曼树的算法

//从已建好的赫夫曼树中选择parent为0,weight最小的两个结点

voidInit();

voidCoding();

//编码

voidDecoding();

//译码

voidPrint_code();

//打印译码好的代码

voidPrint_tree();

//打印哈夫曼树

intRead_tree(HuffmanTree&

);

//从文件中读入赫夫曼树

voidfind(HuffmanTree&

HT,char*code,char*text,inti,intm);

//译码时根据01字符串寻找相应叶子节点的递归算法

voidConvert_tree(unsignedcharT[100][100],ints,int*i,intj);

//将内存中的赫夫曼树转换成凹凸表形式的赫夫曼树

HuffmanTreeHT;

//全局变量

intn=0;

//全局变量,存放赫夫曼树叶子结点的数目

intmain()

{

charselect;

while

(1)

tips();

scanf("

%c"

&

select);

switch(select)//选择操作,根据不同的序号选择不同的操作

{

case'

1'

:

Init();

break;

2'

Coding();

3'

Decoding();

4'

Print_code();

5'

Print_tree();

0'

exit

(1);

default:

printf("

Inputerror!

\n"

}

getchar();

}

return0;

voidtips()//操作选择界面

-----------------------------------------------------\n"

--请选择操作--\n"

\n"

---------------------1初始化赫夫曼树---------------\n"

---------------------2编码---------------\n"

---------------------3译码---------------\n"

---------------------4打印代码文件---------------\n"

---------------------5打印赫夫曼树---------------\n"

---------------------0退出---------------\n"

//初始化函数,输入n个字符及其对应的权值,根据权值建立哈夫曼树,并将其存于文件hfmtree中

voidInit()

FILE*fp;

inti,n,w[52];

//数组存放字符的权值

charcharacter[52];

//存放n个字符

\n输入字符个数n:

"

scanf("

%d"

n);

//输入字符集大小

输入%d个字符及其对应的权值:

n);

for(i=0;

i<

n;

i++)

charb=getchar();

character[i]);

w[i]);

//输入n个字符和对应的权值

HuffmanCoding(HT,character,w,n);

//建立赫夫曼树

if((fp=fopen("

hfmtree.txt"

"

w"

))==NULL)

printf("

Openfilehfmtree.txterror!

for(i=1;

=2*n-1;

if(fwrite(&

HT[i],sizeof(HTNode),1,fp)!

=1)//将建立的赫夫曼树存入文件hfmtree.txt中

printf("

Filewriteerror!

\n赫夫曼树建立成功,并已存于文件hfmtree.txt中\n"

fclose(fp);

//建立赫夫曼树的算法

voidHuffmanCoding(Huffma

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1