课程设计---哈夫曼编码编程实现
《课程设计---哈夫曼编码编程实现》由会员分享,可在线阅读,更多相关《课程设计---哈夫曼编码编程实现(15页珍藏版)》请在毕设资料网上搜索。
1、 1 课程设计报告课程设计报告 课程名称: 数据结构课程设计 课程设计题目: 哈夫曼编码编程实现 系: 数学与计算科学系 专 业: 信息与计算科学 年级、班: 姓 名: 学 号: 指导教师: 职 称: 讲师 2011 年 12 月 2 课程设计课题: 利用哈夫曼编码进行通信可以大大提高信道利用率, 缩短信息传输时间, 降低传输成本, 试设计一个哈夫曼编码系统。功能要求:从键盘输入一段报文(如“what did you do that made you so happy“)或从文档中读取,输出这段报文的哈夫曼编码。 课题分析: 由课题的要求, 在编程中要实现字符统计、 哈夫曼树的建立及该树的哈夫
2、曼编码的读取。 这三者顺序进行。 实现思路 1、字符统计: 字符统计是为了计算出字符的频数,以之构成哈夫曼树叶子结点的权。在实现中,本人采用 一个链表表示字符的统计信息。 并把所有字符关联到一起。 这个链表在后面称为承载统计字 符链表。在链表中的结点是一个结构体。 struct information_node char ch; int frequency; struct information_node *next; *head0; 其中 ch 用来记录相应的字符。frequency 用来记录字符出现的字符的频数,最后用来构成哈 夫曼树叶子结点的权重。以 head0 来指向该链表。其中,本人
3、在这个链表中的表头的结点, 本人不用作统计字符的记录。而以其表头结点的 frequancy 来记录该链表中字符和数。便于 后面的函数实现。 void statistics() char ch; while(ch=cin.get()!=#)/从输入流中断获取字符 if (!find_record(ch)/如果在承载字符的链表中以有那个字符,就不记录。退回调用函 /数。 recording(ch);/如果在承载字符的链表中没那个字符,就向那个链表插入一个结点 /来记录那个字符。 else count(ch);/ 由于有该字符,向承载统计字符链表中就该字符结点的个数记录项加 1. 2、构建哈夫曼树:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中设计图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 哈夫曼 编码 编程 实现
