资源简介
哈工程本科算法实验哈夫曼编码【数据+代码+说明+流程图+测试用例】
代码片段和文件信息
#include
#define MAXBIT 10 /*定义哈夫曼编码的最大长度*/
#define MAXVALUE 10000 /*定义最大权值*/
#define MAXLEAF 30 /*定义哈夫曼树中最多叶子节点个数*/
#define MAXNODE MAXLEAF*2-1 /*哈夫曼树最多结点数*/
typedef struct /*哈夫曼编码信息的结构*/
{
int bit[MAXBIT];
int start;
} Hcodetype;
typedef struct /*哈夫曼树结点的结构*/
{
int weight;
int parent;
int lchild;
int rchild;
} Hnodetype;
void huffmantree(Hnodetype huffnode[MAXNODE]int n) /*构造哈夫曼树的函数*/
{
int ijm1m2x1x2;
for(i=0; i<2*n-1; i++) /*存放哈夫曼树结点的数组huffnode[]初始化*/
{
huffnode[i].weight=0;
huffnode[i].parent=-1;
huffnode[i].lchild=-1;
huffnode[i].rchild=-1;
}
for(i=0; i {
printf(“输入第%d个节点的权值(频率)\n“i+1);
scanf(“%d“&huffnode[i].weight);
}
for(i=0; i {
m1=m2=MAXVALUE;
x1=x2=0;
for(j=0; j {
if(huffnode[j].weight {
m2=m1;
x2=x1;
m1=huffnode[j].weight;
x1=j;
}
else if(huffnode[j].weight {
m2=huffnode[j].weight;
x2=j;
}
}
huffnode[x1].parent=n+i;
huffnode[x2].parent=n+i;
huffnode[n+i].weight=huffnode[x1].weight+huffnode[x2].weight;
huffnode[n+i].lchild=x1;
huffnode[n+i].rchild=x2;
}
}
void main()
{
Hnodetype huffnode[MAXNODE];
Hcodetype huffcode[MAXLEAF]cd;
int ijcpn;
printf(“输入要构造哈夫曼树的节点个数 n\n“);
scanf(“%d“&n); /*输入叶子节点个数*/
while(n<1)
{
printf(“error:输入违法,无法构造哈夫曼树 \n请重新输入:\n“);
scanf(“%d“&n); /*输入叶子节点个数*/
}
huffmantree(huffnoden); /*建立哈夫曼树*/
for(i=0; i {
cd.start=n-1;
c=i;
p=huffnode[c].parent;
while(p!=-1)
{
if(huffnode[p].lchild==c) cd.bit[cd.start]=0;
else cd.bit[cd.start]=1;
cd.start--;
c=p;
p=huffnode[c].parent;
}
for(j=cd.start+1; j huffcode[i].bit[j]=cd.bit[j];
huffcode[i].start=cd.start;
}
for(i=0; i {
printf(“第%d个节点的哈夫曼编码:“i+1);
for(j=huffcode[i].start+1; j printf(“%d“huffcode[i].bit[j]);
printf(“\n“);
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2827 2016-12-06 09:04 哈夫曼编码\哈夫曼.c
文件 28844 2016-12-06 09:14 哈夫曼编码\哈夫曼.exe
文件 2053 2016-12-06 09:14 哈夫曼编码\哈夫曼.o
文件 10205 2016-12-06 09:17 哈夫曼编码\测试用例_.xlsx
文件 74805 2016-12-06 09:49 哈夫曼编码\说明+流程图.docx
目录 0 2018-11-26 19:26 哈夫曼编码\
相关资源
- Delphi2CPP 和注册机
- protobuf-cpp-3.2.0.tar.gz
- VS2015编译的log4cpp动态库
- 北大青鸟S2PPT
- CppOOPDesign.ccrun.857528.rar
- OCPP开放充电站协议.pdf
- cpp-CppRoboticscpp实现机器人算法包括定
- cpp-empty-test.zip
- 基于opencv的双摄像头读取程序含Dire
- TotalCommander插件集
- OCPP2.0协议
- mockcpp官方
- CppTutorial_v5.3_by_LiuChuo.pdf
- 使用openoffice将docxdocpptpptx等转换pdf格
- protobuf-cpp-3.1.0.tar.gz 下载192823
- protobuf-cpp-3.1.0.tar.gz 配置文件
- JsonCpp 编译库lib dll VS2015版
- cpp-zzzJSON是一个纯C实现的最快JSON解析
- cpp-室外基于GPS的无人机分布式编队避
- socket.io-client-cpp.zip
- waifu2x-converter-cpp.zip
- 用VS2008编译好的activemq-cpp3.8.3库,含源
- eclipse-cpp-luna-SR2-linux-gtk-x86_64.tar.gz
- cpp-基于MXNetC框架的CPU实时人脸识别
- C Primer Plus 第6版 中文版.pdf + 习题 +
- jsoncppvs2015编译文件
- 根据wsdl使用gsoap生成的服务器和客户
- Dev-Cpp_5.5.3_最新版
- jsoncpp源码+VS2017编译32和64位静态库
- u3d http besthttp1.7.8.rar 修改IL2CPP版本
评论
共有 条评论