- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北邮数据结构实验报告
北邮数据结构实验报告
北京邮电大学信息与通信工程学院 XX级数据结构实验报告 实验名称: 实验三哈夫曼编/解码器的实现 学生姓名:陈聪捷 日 期: XX年11月28日 1.实验要求 一、实验目的: 了解哈夫曼树的思想和相关概念; 二、实验内容: 利用二叉树结构实现哈夫曼编/解码器 1.初始化:能够对输入的任意长度的字符串s进行统计,统计每个字符的频度,并建立哈夫曼树。 2.建立编码表:利用已经建好的哈夫曼树进行编码,并将每个字符的编码输出。 3.编码:根据编码表对输入的字符串进行编码,并将编码后的字符串输出。 4.译码:利用已经建好的哈夫曼树对编码后的字符串进行译码,并输出译码结果。 5.打印:以直观的方式打印哈夫曼树。 6.计算输入的字符串编码前和编码后的长度,并进行分析,讨论哈夫曼编码的压缩效果。 7.用户界面可以设计成“菜单”方式,能进行交互,根据输入的字符串中每个字符出现的次数统计频度,对没有出现的字符一律不用编码。 2. 程序分析 存储结构 二叉树 template class BiTree { public: BiTree(); //构造函数,其前序序列由键盘输入 ~BiTree(void); //析构函数 BiNode* Getroot(); //获得指向根结点的指针 protected: BiNode *root; //指向根结点的头指针 }; //声明类BiTree及定义结构BiNode Data: 二叉树是由一个根结点和两棵互不相交的左右子树构成 哈夫曼树类的数据域,继承节点类型为int的二叉树 class HuffmanTree:public BiTree data: HCode* HCodeTable;//编码表 int tSize; //编码表中的总字符数 二叉树的节点结构 template struct BiNode //二叉树的结点结构 { T data; //记录数据 T lchild; //左孩子 T rchild; //右孩子 T parent; //双亲 }; 编码表的节点结构 struct HCode { char data; //编码表中的字符 char code; //该字符对应的编码 }; 待编码字符串由键盘输入,输入时用链表存储,链表节点为 struct Node { char character; //输入的字符 unsigned int count;//该字符的权值 bool used; //建立树的时候该字符是否使用过 Node* next; //保存下一个节点的地址 }; 示意图: 关键算法分析 1.初始化函数(void HuffmanTree::Init(string Input)) 算法伪代码: 1.初始化链表的头结点 2.获得输入字符串的第一个字符,并将其插入到链表尾部,n=1(n记录的是链表 中字符的个数) 3.从字符串第2个字符开始,逐个取出字符串中的字符 将当前取出的字符与链表中已经存在的字符逐个比较,如果当前取出 的字符与链表中已经存在的某个字符相同,则链表中该字符的权值加1。 如果当前取出的字符与链表中已经存在的字符都不相同,则将其加入 到链表尾部,同时n++ =n(tSize记录链表中字符总数,即哈夫曼树中叶子节点总数) 5.创建哈夫曼树 6.销毁链表 源代码: void HuffmanTree::Init(string Input) { Node *front=new Node; //初始化链表的头结点 if(!front) throw exception("堆空间用尽"); front->next=NULL; front->character=NULL; front->count=0; Node *pfront=front;
您可能关注的文档
- 北邮数据结构实验报告线性表.docx
- 北航金工实习报告.docx
- 匠人精神的读后感大全.docx
- 北邮校长毕业典礼上演讲稿参考.docx
- 匠人精神的读后感.docx
- 匠人精神读后感模板.docx
- 匠人精神读后感言.docx
- 匠人精神读后感800字 优秀篇.docx
- 匹克威克外传读后感800字.docx
- 区优秀学生申请书.docx
- 2024年淮北职业技术学院高职单招(政治)历年考点笔试题库含答案解析.doc
- 山东省济南市外国语学校三箭分校2019-2020学年高一下学期3月月考语文试卷.docx
- 2021-2022学年上海市吴淞中学高一(下)期末化学试卷.docx
- 2022-2023学年上海市奉贤区致远高级中学高二(下)期中政治试卷(等级考).docx
- 2022-2023学年上海浦东新区新川中学高二(下)期中英语试卷.docx
- 2022-2023学年上海市奉贤区致远高级中学高一(下)期末历史试卷.docx
- 2024年庄河市中心医院专项招聘医学类人员及高层次卫技人才历年笔试常考点试题含答案带黑钻版详解.docx
- 初中语文工作总结【独家总结范文】.doc
- 2018年行政主管年终工作总结范文【独家总结范文】.doc
- 2024年湖北生态工程职业技术学院高职单招(政治)历年考点笔试题库含答案解析.doc
文档评论(0)