班级网页设计专周报告.docVIP

  • 31
  • 0
  • 约8.54千字
  • 约 15页
  • 2017-09-07 发布于陕西
  • 举报
成都电子机械高等专科学校 专周报告 课程名称 数据结构 设计题目 哈夫曼树编码与译码 班级 10531 学号 02 姓名 宋美 指导老师 杨勇 完成时间 2011-5-30至2011-6-3 成都电子机械高等专科学校计算机工程系 目 录 1. 专周题目与要求 1 2. 设计与实现 1 3. 专周小结 4. 参考文献 报告正文 注:以下所列内容报告中都应包括,可以根据实际情况扩充。二级及以上标题自己设计,标题最多列至4级 专周题目与要求 专周题目:哈夫曼编码与译码 专周要求: 1.由用户输入一段文章或从文件中读入(英文),计算机自动统计出文章中各单词出现的频率,以此为依据对该文章进行哈夫曼编码(即频率为权值)。 2.对编码后的文章要输出到指定的文件,文件的开始位置给出编码表。第二行开始为编码的正文。 3.对给定的编码文章进行译码,把译码后的结果显示出来,或输出到文本文件。 编程要点: 1).有序表的建立与操作,二叉树森林是一有序表的形式存储的。 2).哈夫曼编码,见教材相关部分。 3) 哈夫曼译码,把编码表提取出来创建一棵编码二叉树。 设计与实现 内容包括:输入一篇英文文章,统计该文章中每个单词出现的次数,然后以它们作为权值,对每一个单词进行编码,编码完成后再对其编码进行译码,提取创建一棵编码二叉树并以有序表的形式存储。 1. 从键盘输入一段英语文章; 2. 统计这篇文章中的每个单词出现的次数; 3. 以单词出现次数作为权值,构建哈夫曼树,并创建一棵编码二叉树以二叉树的形式存储; 4. 对每个单词进行编码并将编码进行破译。 设计思路:1、创建一个工程Win32 Console Application,将函数体得实现存放于一个.c文件中,再创建一个.h文件用于存放所用的函数体以及一个总函数.c。 2、首先建立一个有序表,用于存放编码后的二叉树。 3、然后,将用户输入的英文文章的每个单词的频率计算出来作为权值。 4、编写哈夫曼树的初始化,建立,以及编码和译码。 关键技术和解决方案(关键代码,关键算法) 1.OrderList.c include OrderList.h #include stdio.h #includestring.h #includeiostream.h /*初始化有序表*/ void InitiList(OrderList* list) { list-ListLen = 0; list-Compare = NULL; list-Vist = NULL; } //====================================================// /*添加一个元素*/ int AddElement(OrderList* list, void* e) { int j; if(list-ListLen=MAXSIZE) { printf(表已满\n); return 0 ; } if(list-ListLen==0) list-data[0]=e; else for(j=list-ListLen;j0;j--) { int n; n=compareInt(list-data[j-1],e); if(n=0) { list-data[j]=list-data[j-1]; if(j-1==0) list-data[0]=e; } if(n0) { list-data[j]=e; break; } } ++list-ListLen; return 1; } //=================================================// /*遍历有序表*/ void Tranverse(OrderList* list) { int i; if (!list-Vist) { printf(请先设置Vist回调函数\n); return; } printf(各元素的权重:); for (i = 0; i list-ListLen; i++) { list-Vist(list-data[i]); } printf(\n); } void strtolower(char *str) { for (;*str;str++) { if(*strA||*strZ) continue; *str+=0x20; } } //=================================================/

文档评论(0)

1亿VIP精品文档

相关文档