电文的编码和译码c语言实现,电文的编码及译码.doc

数据结构课程设计

题目:电文的编码与译码

院系:

班级:

学号:

姓名:

2014-2015年度 第1学期

目录

一.题目:电文的编码与译码3

二.设计目标3

三.问题描述3

四.需求分析3

五.概要设计4

六.详细设计(给出算法的伪码描述和流程图)4

流程图设计:4

主流程图:4

哈夫曼编码:5

哈夫曼译码:6

建立哈夫曼树:8

代码分析:10

第一步:定义常量与结构体:10

建立哈夫曼树10

哈夫曼编码11

哈夫曼译码12

第三步:在主函数中调用其它函数13

七.测试分析14

八.使用说明14

九.测试数据15

十.课程设计总结16

电文的编码与译码

一.题目:电文的编码与译码

二.设计目标

帮助学生熟练掌握了解哈弗曼树的创建,以及利用哈弗曼进行编码和译码。

三.问题描述

从键盘接收一串电文字符,输出对应的Huffman编码。同时,能翻译由Huffman编码生成的代码串,输出对应的电文字符串。

四.需求分析

在电报通信中,电文是以二进制代码传送的。在发送时,需要将电文中的字符转换成二进制代码串,即编码;在接收时,要将收到的二进制代码串转化为对应的字符序列,即译码。我们知道,字符集中的字符被使用的频率是非均匀的。在传送电文时,要想使电文总长可能短。因此,若对某字符集进行不等长编码的设计,则要求任意一个字符的编码都不是其他字符编码的前缀,这种编码称做前缀编码。

由Huffman树求得的编码是最优前缀,也叫Huffman编码。给出字符集和各个字符的概率分布,构造Huffman树,将Huffman树中的每个分支结点的左分支标0,右分支标1,将根到每一个叶子路径上的标号连起来,就是该叶子所代表字符的编码。

五.概要设计

构建一颗Huffman树;

实现Huffman编码,并用Huffman编码生成的代码串进行译码。

程序中字符和权值是可变的,实现程序的灵活性。

六.详细设计(给出算法的伪码描述和流程图)

总体操作步骤:

流程图设计:

主流程图:

哈夫曼编码:

哈夫曼译码:

建立哈夫曼树:

代码分析:

第一步:定义常量与结构体:

#define MAXNUM 50

typedef char DataType;

typedef struct/* 哈夫曼树结点的结构 */

{

DataType data; /* 数据用字符表示 */

int weight; /* 权值 */

int parent; /* 双亲 */

int left; /* 左孩子 */

int right; /* 右孩子 */

}HuffNode;

typedef struct/* 哈夫曼编码的存储结构 */

{

DataType cd[MAXNUM];/* 存放编码位串 */

int start; /* 编码的起始位置 */

}HuffCode;

第二步:构造函数:

建立哈夫曼树

int HuffmanCreate(HuffNode *ht)

{

int i,k,n,m1,m2,p1,p2;

printf("请输入元素个数:");

scanf("%d",&n);

for(i=1;i<=n;i++) /* 输入结点值和信息 */

{

getchar(); /* 接收回车 */

printf("第%d个元素的=>\n\t结点值:",i);

scanf("%c",&ht[i].data);

printf("\t权 重:");

scanf("%d",&ht[i].weight);

}

for(i=1;i<=2*n-1;i++) /* 对数组初始化 */

ht[i].parent=ht[i].left=ht[i].right=0;

for(i=n+1;i<=2*n-1;i++)

{

m1=m2=32767; /* 初始化,令m1、m2为整数最大值 */

p1=p2=1;

for(k=1;k<=i-1;k++) /* 从数组ht[1]到ht[i-1]中找出 */

if(ht[k].parent==0) /* parent为0并且权值最小的两个结点 */

if(ht[k].weight

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中二进制怎么说_面试常用:说清楚Java中synchronized和volatile的区别

回顾一下两个关键字&#xff1a;synchronized和volatile1、Java语言为了解决并发编程中存在的原子性、可见性和有序性问题&#xff0c;提供了一系列和并发处理相关的关键字&#xff0c;比如synchronized、volatile、final、concurren包等。2、synchronized通过加锁的方式&#…

python 日记 day4。

1.为何数据要分类 数据是用来表示状态的&#xff0c;不同的状态应该用不同类型的数据来表示。 2.数据类型 数字 字符串 列表 元组 字典 集合 列表&#xff1a;列表相比于字符串&#xff0c;不仅可以储存不同的数据类型&#xff0c;而且可以储存大量数据&#xff0c;32位python的…

c语言复合语句开始标记字符,国家开放大学C语言程序设计A第一次形考任务及答案(2020年整理)(7页)-原创力文档...

;学 海 无 涯 ;;学 海 无 涯 ;学 海 无 涯 ;学 海 无 涯二、判断题(共 60 分&#xff0c;每小题 2 分。叙述正确则回答“是”&#xff0c;否则回答“否”)题目 21C 语言中的每条简单语句以分号作为结束符。对 题目 22C 语言中的每条复合语句以花括号作为结束符。错 题目 23在 C…

搜索不到投屏设备怎么办_电视投屏搜索不到设备解决方案

手机投屏电视想必许多人都用过&#xff0c;但是仍然有些人不会投屏&#xff0c;或者说投屏不成功。今天小编就给大家讲解&#xff0c;手机投屏电视&#xff0c;搜索不到设备怎么解决呢&#xff1f;在解决这个问题之前&#xff0c;我们先了解一下&#xff0c;手机投屏电视需要哪…

准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure(对于二分类问题)

首先我们可以计算准确率(accuracy),其定义是: 对于给定的测试数据集&#xff0c;分类器正确分类的样本数与总样本数之比。也就是损失函数是0-1损失时测试数据集上的准确率。 下面在介绍时使用一下例子&#xff1a; 一个班级有20个女生&#xff0c;80个男生。现在一个分类器需要…

js与c语言互相调用,Objc与JS间相互调用

过去3、4年都在进行跨平台的混合应用开发&#xff0c;但一直没有系统梳理跨平台技术的底层原理&#xff0c;趁新工作未正式入职&#xff0c;这里整理一下。跨平台的一种实现是基于webview。所谓webview&#xff0c;实质是在原生app中打开一个内嵌浏览器&#xff0c;具体到iOS平…

swift 拖动按钮_Swift - 单元格滑动按钮库SwipeCellKit使用详解1(基本用法)

在之前的两篇文章中我分别介绍了如何使用 iOS8和 iOS11提供的相关代理方法&#xff0c;来实现 tableView单元格滑动事件按钮&#xff1a;但它们局限性还是比较大的&#xff0c;前者只能实现尾部按钮&#xff0c;且按钮只能使用文字无法使用图片。而后者对系统版本又要求比较高。…

MySQL数据库优化(五)

MySQL配置优化 通过配置my.cnf使数据库达到优化的目的。 1、innodb的缓冲池配置 innodb_buffer_pool_size  通常配置服务器内存的60%~70% 2、innodb log缓存配置 innodb_log_buffer_size  这个不宜配置太大&#xff0c;因为日志缓存每秒刷新一次 3、配置缓冲池个数 innodb_…

qt用c语言编程 pdf下载文件,Qt 使用Poppler实现pdf阅读器的示例代码

开发环境 Qt5.5.1、Qt Creator 3.5.1Qt实现pdf阅读器和MFC实现pdf阅读器&#xff0c;其实原理都是差不多的。注意&#xff1a;这个是MinGW版本的Qt&#xff0c;也就是运行在GCC环境下的库&#xff0c;里面只包含 *.dll 和 *.a 。如果是Vistual Studio版本的Qt &#xff0c;那么…

redis 分布式锁 看门狗_分布式锁Redisson的使用,看门狗机制

Redisson简介Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象&#xff0c;还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingD…

BZOJ 1018: [SHOI2008]堵塞的交通traffic

二次联通门 : BZOJ 1018: [SHOI2008]堵塞的交通traffic /*BZOJ 1018: [SHOI2008]堵塞的交通traffic麻麻这题玩我这题简直消磨人的意志写了一天了写一段玩一段直接写不下去什么时候恢复一下心情再写*/ #include <cstdio> #include <iostream>#define rg register in…

c语言二叉树的头文件叫什么,西安交大朱站立数据结构——使用C语言》头文件系列——二叉树.doc...

西安交大朱站立数据结构——使用C语言》头文件系列——二叉树本文为二叉链存储结构的二叉树操作实现&#xff0c;实现了二叉树的定义、插入数据、删除数据、撤销以及二叉树的打印、前序遍历、中序遍历、后序遍历等。本项目工程包含2个头文件(BiTree.h、BiTreeTraverse.h)和一个…

rfcv函数实现_OpenSSL AES_ctr128_encrypt()作为伪随机函数在RFC3711(SRTP)

128位的主密钥&#xff1a;E1F97A0D3E018BE0D64FA32C06DE4139112位输入矢量&#xff1a;0EC675AD498AFEEBB6960B3AABE616位计数器&#xff1a;0000喂奶时的级联将112位输入向量和16位计数器转换为AES_ctr128_encrypt()我是不是得到预期的输出附录B.3的RFC3711列出了。(根据RFC3…

linux/npm/git的简单操作

下面是命令操作的详细步骤&#xff0c;每一步都是相连接的&#xff1b;对于git的相关命令&#xff0c;包括了团队开发时候如何操作&#xff0c;以及QA如何测试的&#xff1b;都挺详细的&#xff0c;可能有注释的理解不太正确&#xff0c;可以进行补充&#xff1b; 也可以看着之…

C语言工厂方法模式,工厂函数模式 (C语言实现)

工厂模式属于创建型模式&#xff0c;大致可以分为三类&#xff0c;简单工厂模式、工厂方法模式、抽象工厂模式。二. 工厂方法模式所谓工厂方法模式&#xff0c;是指定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子…

c语言代码 linux 关机_android linux 关机流程

To power off an Android phone, keep pressing power bottom then shutdown menu is appeard. Then choose ‘Power OFF’ to power off actually.I looked for the source code to see how to do these sequence.(Japanese version of this page)Showing shutdown menuHere i…

光绘文件 c语言 解析,AltiumDesigner输出光绘文件

1、钻孔信息生成设置打开PCB文件&#xff0c;放置钻孔位图符号对应的孔大小的列表&#xff1a;切换到DrillDrawing层放置字符串&#xff0c;Place->string(PS)&#xff0c;此时按Tab键&#xff0c;在出现的Text文本框中点击下拉箭头&#xff0c;选择.Legend&#xff0c;OK。…

logback日志pattern_Logback pattern transactionid 中如何自定义灵活的日志过滤规则

当我们需要对日志的打印要做一些范围的控制的时候&#xff0c;通常都是通过为各个Appender设置不同的Filter配置来实现。在Logback中自带了两个过滤器实现&#xff1a;ch.qos.logback.classic.filter.LevelFilter和ch.qos.logback.classic.filter.ThresholdFilter&#xff0c;用…

曼哈顿距离最小生成树与莫队算法(总结)

曼哈顿距离最小生成树与莫队算法&#xff08;总结&#xff09; 1 曼哈顿距离最小生成树 曼哈顿距离最小生成树问题可以简述如下&#xff1a; 给定二维平面上的N个点&#xff0c;在两点之间连边的代价为其曼哈顿距离&#xff0c;求使所有点连通的最小代价。 朴素的算法可以用O(N…

功能引导 android,Flutter实现App功能引导页

App功能介绍页&#xff0c;主要是由介绍app功能的几张图片和当前页指示符组成&#xff0c;如下效果我们来一步一步实现上面的界面,左右滑动切换显示功能页,这个可以通过PageView来实现,底部的指示符半透明覆盖在PageView上,开发过Android同学知道可以用Framelayout布局来实现&a…