设计 任务书 文档 开题 答辩 说明书 格式 模板 外文 翻译 范文 资料 作品 文献 课程 实习 指导 调研 下载 网络教育 计算机 网站 网页 小程序 商城 购物 订餐 电影 安卓 Android Html Html5 SSM SSH Python 爬虫 大数据 管理系统 图书 校园网 考试 选题 网络安全 推荐系统 机械 模具 夹具 自动化 数控 车床 汽车 故障 诊断 电机 建模 机械手 去壳机 千斤顶 变速器 减速器 图纸 电气 变电站 电子 Stm32 单片机 物联网 监控 密码锁 Plc 组态 控制 智能 Matlab 土木 建筑 结构 框架 教学楼 住宅楼 造价 施工 办公楼 给水 排水 桥梁 刚构桥 水利 重力坝 水库 采矿 环境 化工 固废 工厂 视觉传达 室内设计 产品设计 电子商务 物流 盈利 案例 分析 评估 报告 营销 报销 会计
 首 页 机械毕业设计 电子电气毕业设计 计算机毕业设计 土木工程毕业设计 视觉传达毕业设计 理工论文 文科论文 毕设资料 帮助中心 设计流程 
垫片
您现在所在的位置:首页 >>土木工程毕业设计 >> 文章内容
                 
垫片
   我们提供全套毕业设计和毕业论文服务,联系微信号:biyezuopin QQ:2922748026   
huffman编解码器
文章来源:www.biyezuopin.vip   发布者:毕业作品网站  
1 设计目的
(1)熟悉并且掌握huffman编码算法的流程和实现.
(2)应用huffman算法实现模拟编码器,实现对英文文章中对单词的编码.程序实现对输入的一篇英文文章(以 .txt文件读入),输出huffman编码(以 .txt文件输出),并试着译码.
 
2 设计任务
用C语言编写出实现huffman编码算法的各个功能模块,并整合为一个完善的程序,最后以达到压缩文件的目的.
 
3 设计方法与步骤
3.1 需求分析
   我们如何得到使电文总长最短的二进制前缀编码呢?假设每种字符在电文中出现的次数为wi,其编码长度为li,电文中只有n种字符,则电文总长为∑wili.对应到二叉树上,若置wi为叶子结点的权,li恰为从根到叶子的路径长度.则∑wili恰在此时二叉树上带权路径长度.由此可见,设计电文总长最短的二进制前缀编码即为以n种字符出现的频率作权,设计一棵huffman树的问题,由此得到的二进制前缀编码便称为huffman编码.
 
3.2 概要设计
    3.2.1 huffman编码程序模块
(1)weight():此函数将整篇英文文章的各个单词根据空格分开,并分别存入结构体数组中,最后求出各个单词的权值.
结点的存储结构:
               typedef struct{
                   char ch[50];
                   float w;
}weightnode;       
     (2)select():此函数的功能是在huffman树中选出两个父结点等于0且权值最小的两个结点.
     (3)createhuffmantree():此函数的功能是创建huffman树.
     (4)huffmancoding():此函数的功能是从叶子到根逆向求huffman编码.
     (5)decoding():此函数的功能是根据编码求译码.
     (6)main():主函数.用来打开输入文件,从输入文件获取需要编码的串.然后调用其它函数实现程序功能.
 
3.3 详细设计
//定义存储结构
typedef struct{
   char ch[50];
   float w;
}weightnode;              /*动态分配数组存储文档中的英语单词*/
typedef struct{
  char ch[50];
  float weight;
  int parent,lchild,rchild;
}htnode,*huffmantree;             /*动态分配数组存储赫夫曼树*/
typedef char **huffmancode;     /*动态分配数组存储赫夫曼编码表*/
 
//将方档中的单词存入结构体中,并求出权值
weightnode *weight(char *ccc)                  /*将文档中的单词分别存入结构体中,并求出权值*/
{
    weightnode *c,*mc;
    char c2[100][50],*c1;
    int i,m=0,number=0,t=0,j=0;
    float number2=0.0,x1,x2;
    for(i=0;i<100;i++)                /*初始化二维数组*/
    {
        for(j=0;j<50;j++)
        {
              c2[i][j]='\0';
        }
    }
    c=(weightnode *)malloc(100*sizeof(weightnode));
    mc=c;
    for(i=0;i<100;i++,c++) {strcpy(&c->ch,nul);c->w=0;}
    m=j=0;
    c=mc;
    for(i=0;i<=strlen(ccc);i++)
    {
if(*(ccc+i)>='a'&&*(ccc+i)<='z'||*(ccc+i)>='A'&&*(ccc+i)<='Z')
        {
             *(*(c2+j)+m)=*(ccc+i);
             m++;
         }
        else
        {
              *(*(c2+j)+m)='\0';
              j++;
              m=0;
        }
    }
  全套毕业设计论文现成成品资料请咨询微信号:biyezuopin QQ:2922748026     返回首页 如转载请注明来源于www.biyezuopin.vip  

                 

打印本页 | 关闭窗口
 上一篇文章:未细分的毕业设计
本类最新文章
基于植物空间的风景区植物景观改造 花都公园景观设计 设计说明书(论 景观植物赏析 毕业论文+任务书+
新昌县鼓山公园景观设计 任务书+ 机械侧深施肥对水稻土壤养分含量的 日投4000张黄牛皮轻革(鞋面革
| 关于我们 | 友情链接 | 毕业设计招聘 |

Email:biyeshejiba@163.com 微信号:biyezuopin QQ:2922748026  
本站毕业设计毕业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.如有侵犯您的版权有损您的利益,请联系我们会立即改正或删除有关内容!