资源简介
数据结构哈夫曼编码带译码功能,C语言版程序加完成版实验报告,完全可运,供大家参考。
代码片段和文件信息
#include
#include
#define MaxValue 10000
//设定的权值最大值
#define MaxN 27
//设定的最大结点个数
#define Maxsc 500
//设定存放字符串编码数组的大小
#include “Haffman.h“ //包含头文件“Haffman.h“
void main(void)
{
int i j n = 27 k l; //定义n为结点个数
int weight[MaxN] =
{18664132232103211547571532205763151485180238181161}; //存放各个结点的权值
char str[Maxs]; //存放字符串
char letter[MaxN] =
{‘ ‘‘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‘};
//结点对应字母
char hcode[MaxN][MaxBit];
//存放每个结点的对应编码
int count[MaxN] = {0};
//存放每个结点的对应编码位数
char strcode[Maxsc];
//存放字符串的编码结果
/*
//输入结点个数n
printf(“请输入结点个数(不能超过%d):“ MaxN);
scanf(“%d“ &n);
getchar(‘\n‘);
//判断n的值最大不能超过MaxN
if(n > MaxN)
{
printf(“\n给出的n越界修改MaxN的值!\n“);
exit(0);
}
*/
//输入字符串
printf(“请输入要编码的字符串(最大长度为%d): “ Maxs);
scanf(“%c“ &str[0]);
if(str[0] == ‘\n‘)
{
printf(“没有输入字符串!\n“);
exit(0);
}
i = 0;
while(str[i] != ‘\n‘)
{
i++;
scanf(“%c“ &str[i]);
if(i >= Maxs)
{
printf(“输入的字符串过大!\n“);
exit(0);
}
}
str[i] = ‘\0‘;
/*
//输入各个结点的的字母和对应的权值
printf(“\n请输入各个结点对应的字母:\n“);
for(i = 0; i < n; i++)
{
printf(“letter[%d] = “ i + 1);
scanf(“ %c“ &letter[i]);
}
printf(“\n请输入各个结点的权值:\n“);
for(i = 0; i < n; i++)
{
printf(“weight[%d] = “ i + 1);
scanf(“%d“ &weight[i]);
}
*/
HaffNode *myHaffTree = (HaffNode *)malloc(sizeof(HaffNode) * (2 * n + 1));
Code *myHaffCode = (Code *)malloc(sizeof(Code) * n);
Haffman(weight n myHaffTree);
HaffmanCode(myHaffTree n myHaffCode);
//输出每个叶结点的哈夫曼编码
printf(“\n对26个小写英文字母和空格进行哈夫曼编码结果如下:\n“);
for(i = 0; i < n; i++)
{
printf(“Letter = %c Weight = %d Code = “ letter[i] myHaffCode[i].weight);
for(j = myHaffCode[i].start; j < n; j++)
{
printf(“%d“ myHaffCode[i].bit[j]);
count[i]++;
}
putchar(‘\n‘);
}
putchar(‘\n‘);
//存放每个结点对应的编码
for(i = 0; i < n; i++)
for(k = 0; k < count[i]; k++)
{
for(j = myHaffCode[i].start l = 0; j < n; j++ l++)
hcode[i][l] = myHaffCode[i].bit[j] + 48;
hcode[i][l] = ‘\0‘;
}
//存放字符串哈夫曼编码结果
k = 0;
l = 0;
while(str[k] != ‘\0‘)
{
for(i = 0; i < n; i++)
{
if(str[k] == letter[i])
for(j = 0; j < count[i]; j++)
strcode[l++] = hcode[i][j];
}
k++;
}
strcode[l++] = ‘\0‘;
//读取字符串并且显示字符串哈夫曼编码结果
printf(“对您输入的字符串“);
i = 0;
while(str[i] != ‘\0‘)
{
printf(“%c“ str[i]);
i++;
}
printf(“进行哈夫曼编码的结果为:\n“);
for(i = 0; i < strlen(strcode); i++)
printf(“%c“ strcode[i]);
putchar(‘\n‘);
//调用译码函数进行译码
HaffmanCoding(strcode hcode letter n str);
//输出译码结果
printf(“\n进行哈夫曼译码的结果为:“);
for(i = 0; i < strlen(strcode); i++)
printf(“%c“ strcode[i]);
printf(“\n\n“);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 530 2010-01-02 19:04 哈弗曼编码\Huffman编码\Huffman编码.dsw
文件 33792 2010-01-02 19:55 哈弗曼编码\Huffman编码\Huffman编码.ncb
文件 326 2010-01-02 18:18 哈弗曼编码\Huffman编码\BFChang.h
文件 1561 2010-01-02 19:55 哈弗曼编码\Huffman编码\Huffman编码.plg
文件 3178 2010-01-02 19:06 哈弗曼编码\Huffman编码\Haffman.h
文件 4464 2010-01-02 19:06 哈弗曼编码\Huffman编码\Huffman编码.dsp
文件 3205 2010-01-02 19:55 哈弗曼编码\Huffman编码\Huffman.cpp
文件 48640 2010-01-02 19:55 哈弗曼编码\Huffman编码\Huffman编码.opt
文件 33792 2010-01-02 19:55 哈弗曼编码\Huffman编码\Debug\vc60.idb
文件 53248 2010-01-02 19:55 哈弗曼编码\Huffman编码\Debug\vc60.pdb
文件 228312 2010-01-02 19:06 哈弗曼编码\Huffman编码\Debug\Huffman编码.pch
文件 193528 2010-01-02 19:55 哈弗曼编码\Huffman编码\Debug\Huffman编码.ilk
文件 188505 2010-01-02 19:55 哈弗曼编码\Huffman编码\Debug\Huffman编码.exe
文件 451584 2010-01-02 19:55 哈弗曼编码\Huffman编码\Debug\Huffman编码.pdb
文件 12028 2010-01-02 19:55 哈弗曼编码\Huffman编码\Debug\Huffman.obj
文件 233984 2010-06-27 21:14 哈弗曼编码\数据结构设计性实验报告译码.doc
目录 0 2010-06-27 21:12 哈弗曼编码\Huffman编码\Debug
目录 0 2010-06-27 21:12 哈弗曼编码\Huffman编码
目录 0 2010-06-27 21:12 哈弗曼编码
----------- --------- ---------- ----- ----
1490677 19
- 上一篇:全景图像拼接
- 下一篇:LS-DYNA自定义本构子程序基本流程
相关资源
- 基于数据结构c语言实现的银行叫号系
- 迷宫求解算法数据结构c语言
- C语言-哈夫曼编码实验报告
- 基于哈夫曼编码的文件压缩解压程序
- 数据结构——迷宫
- 循环队列c程序
- 史上最全经典数据结构算法c语言实现
- 老鼠走迷宫数据结构课程设计
- 哈夫曼树的应用和实现 C语言
- 哈夫曼编码译码器实验报告内
- 数据结构之迷宫求解完整代码(C语言
- 数据结构列车时刻表管理系统
- C语言:中缀算术表达式求值栈 附答案
- 数据结构算法与应用 c++语言描述(第
- (严蔚敏)数据结构视频教程C语言版
- 哈夫曼最小生成树及最短路径代码
- C语言数据结构程序表达式求值 二叉树
- 中序遍历二叉排序树
- 先序后继线索二叉树
- 宿舍管理系统 数据结构课程设计 宿舍
- 数据结构课程设计----C语言航空订票系
- 一个红黑树实现c源码
- C++实现快速排序
- 一些常见的数据结构ADT定义及相关数
- 清华 严蔚敏 《数据结构》代码全部实
- Huffman 编码器与解码器-----数据结构课
- 教师工作量统计系统可改职工工作量
- 哈夫曼编码
- 进销存货物管理系统数据结构
- 拓扑排序 ---排课表----数据结构
评论
共有 条评论