• 哈夫曼解码编码实现


    20172323 2018-2019-1 《程序设计与数据结构》课堂测试报告

    课程:《程序设计与数据结构》
    班级: 1723
    姓名: 李楠
    学号: 20172330
    实验教师:王志强老师
    测试日期:2018年12月10日
    必修/选修: 必修

    1.测试内容

    哈夫曼编码测试
    设有字符集:S={a,b,c,d,e,f,g,h,i,j,k,l,m,n.o.p.q,r,s,t,u,v,w,x,y,z}。
    给定一个包含26个英文字母的文件,统计每个字符出现的概率,根据计算的概率构造一颗哈夫曼树。
    并完成对英文文件的编码和解码。
    要求:
    (1)准备一个包含26个英文字母的英文文件(可以不包含标点符号等),统计各个字符的概率
    (2)构造哈夫曼树
    (3)对英文文件进行编码,输出一个编码后的文件
    (4)对编码文件进行解码,输出一个解码后的文件
    (5)撰写博客记录实验的设计和实现过程,并将源代码传到码云
    (6)把实验结果截图上传到云班课

    2. 测试过程及结果

    基本原理:

    哈夫曼树:给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

    路径: 树中一个结点到另一个结点之间的分支构成这两个结点之间的路径。

    路径长度:路径上的分枝数目称作路径长度。

    树的路径长度:从树根到每一个结点的路径长度之和。

    结点的带权路径长度:在一棵树中,如果其结点上附带有一个权值,通常把该结点的路径长度与该结点上的权值之积称为该结点的带权路径长度(weighted path length)

    树的带权路径长度:如果树中每个叶子上都带有一个权值,则把树中所有叶子的带权路径长度之和称为树的带权路径长度。

    3. 代码链接

    (https://gitee.com/CS-IMIS-23/linan20172330newterm)

    4. 测试过程中遇到的问题和解决过程

    5.参考资料

  • 相关阅读:
    Java职业生涯规划
    Java类加载器总结
    Java字节流与字符流的区别
    Java堆和栈的区别
    详解Java类的生命周期
    Java编程常见问题汇总
    Java总结输入流输出流
    Java NIO:浅析I/O模型
    perl 处理文件路径的一些模块
    Delphi第三方控件安装卸载指南
  • 原文地址:https://www.cnblogs.com/linanlalala/p/10111053.html
Copyright © 2020-2023  润新知