数据结构课程设计报告。
设计题目哈夫曼编/译码器。
班级网络工程172
学号19317218
姓名周傲。南京农业大学计算机系。
数据结构课程设计报告内容。
一. 课程设计题目。
哈夫曼编/译码器。
二.算法设计思想。
通过计算各字符出现的频率,生成哈夫曼树,对文本文件的字符从哈夫曼树的叶子结点到根结点编码,生成编码文件。再次利用哈夫曼树进行译码从根结点到叶子结点得到哈夫曼编码对应的字符,从而生成文本文件。
三. 程序结构。
说明本程序中主程序的流程以及各程序模块之间的层次(调用)关系;画出函数的调用关系图。
主程序先调用函数得到不同字符出现的频率,再调用frequency
得到不同字符出现的频率,再调用huffmancoding函数建立哈弗曼树和各字符的哈夫曼编码,再调用create函数生成压缩文件,最后调用translatehuf函数得到压缩文件所译成的文本文件。
四. 实验结果与分析。
1.用户使用说明。
说明如何使用你编写的程序,详细列出每一步的操作步骤。
首先将需要编码的文章放入英文短文。txt中,再运行程序即可看到各字符所对应的哈夫曼编码和名为英文短文压缩。huf的文件和通过英文短文压缩。huf转换成的英文短文文件。
2. 测试结果。
列出你的测试数据和测试结果。要有多组测试数据及相应结果,并对多组结果进行分析比较;最好是能给出软件操作的部分关键界面截图。
测试2截图———各字符对应的哈夫曼编码和频率。
3.调试分析
调试过程中遇到的问题是如何解决的;算法的时间复杂度(包括基本操作和其他算法的时间复杂度的分析);算法的改进设想。
为了确定错误的地方,进行多次调试排查各个地方直到确定错误地点,然后分析错误的种类,进行纠正,再次进行多次调试,确认无误。
select函数的时间复杂度为o(n),建立哈夫曼树的时间按复杂度为o(n*n)建立哈夫曼编码表的时间复杂度为o(n)。code函数的函数时间复杂度为o(n)。translatehuf函数的时间复杂度为o(n*n)。
3】这个算法应该可以更加简洁,更加高效快捷,能够更让人容易理解。
五. 总结(收获与体会)
任务完成过程的收获和体会、遇到问题过程的思考、程序调试能力的思考、对数据结构课程的思考等相关内容。
随着我对数据结构课程的深入学习,从数据结构课程中,从一开始我对数据结构的不以为意到认识到数据结构的重要性,明白了数据结构不仅是编程学习的基础之一,也是算法的精妙之处。通过对数据结构的深入学习和这次难能可贵的实践,我了解到了构建性的思维方法,掌握程序设计和数据组织的技术。程序设计的第一天我毫无头绪,犹如一头乱麻,之后我开始镇定下来,一步一步的分解,将步骤分为几部分,然后一步一步的设计程序,我完成了最后一步之后从整体分析找出错漏,完善程序,最后程序终于能够成功运行。
六. 源程序。
列出所有程序文件名及相应源**。
程序文件名:
#include<>
#include<>
#include<>
typedef int status;
#define ok 1
#define error 0
typedef struct;
char ch;
file *file;
file=fopen(filename,"r");
if(file==null)
return error;
ch=fgetc(file);
while(ch!='#
ht[j].parent=1;//给已经出现的最小结点作上标记。
return j;
void select(huffmantree ht,int n,int &s1,int &s2)
void huffmancoding(huffmantree &ht,huffmancode &hc,int *w,int n)
for(i=n+1;i<=m;i++,p++)
for(i=n+1;i<=m;i++)
hc=(huffmancode)malloc(sizeof(char *)n+1));分配n个字符的指针向量。
cd=(char *)malloc(sizeof(char)*n);/分配编码空间。
cd[n-1]='0';
for(i=1;i<=n;i++)
free(cd);
status create(huffmantree ht,huffmancode hc,char *filename1,char *filename2,int n,char c)
ch=fgetc(file1);
fputc('#',file2);
fclose(file1);/关闭文件。
fclose(file2);
return ok;
translatehuf(huffmantree ht,huffmancode hc,char *filename1,char *filename2,int n,char c,char *code);
char ch;
数据结构课程设计报告格式
本科课程设计 报告 院 系。专业。学生姓名。学号。任课教师吴瑕。提交日期。题目。1.问题描述 2.数据结构描述 如 可参考课本p50 1 每个多项式必须用单链表来存储 typedef struct node float coef系数。int exp指数。struct node next指向下个结点的...
数据结构课程设计报告格式
西安郵電學院。题目 校园导游系统。院系名称计算机学院。专业名称计算机科学与技术。班级计科1106 学生姓名崔斌。学号 8位04111185 指导教师王春梅。设计起止时间 2012年12月17日 2012年12月21日。一。设计目的。为了让非本校的同学们,家长们能够充分了解本校 西安邮电大学。实践数据...
数据结构课程设计报告格式
西安郵電學院。题目 校园导游系统。院系名称 专业名称 班级 学生姓名 学号 8位 指导教师王春梅。设计起止时间 2011年12月12日 2011年12月16日。一。设计目的。二。设计内容。三 概要设计。1 功能模块图 2 各个模块详细的功能描述。四 详细设计。1 功能函数的调用关系图 2 各功能函数...