huffman图像编码C语言,Huffman编码 数据结构 C语言
为解决广大童鞋的数据结构实验问题写下本文:(只做参考哦。)
实验要求:
Huffman编码(二叉树)
l实验目的:熟练掌握二叉树应用(Huffman编码)的基本算法实现。
l实现功能:对输入的一串电文字符实现Huffman编码,再对Huffman编码生成的代码串进行译码,输出电文字符串。实现功能如下:
¨Huffman树的建立
¨Huffman编码的生成
¨编码文件的译码
l实验机时:4
l设计思路:
数据结构:
#define n 100
//叶子结点数
#define m 2*n-1
// Huffman树中结点总数
typedef struct {
int weight;
//权值
int lchild , rchild , parent; //左右孩子及双亲指针
}HTNode; //树中结点类型
typedef HTNode HuffmanTree[m+1];
//0号单元不用
主要实现函数:
n统计字符串中字符的种类以及各类字符的个数的函数
n构造Huffman树的函数
nHuffman编码的函数
n建立正文的编码文件的函数
n代码文件的译码函数
n主函数
代码如下:
#include
#include
#include
#define
n 5 //叶子结点数
#define
m 2*n-1 // Huffman树中结点总数
typedef
struct
{
int weight; //权值
int lchild ,
rchild , parent;
//左右孩子及双亲指针
}
HTNode; //树中结点类型
HTNode
HuffmanTree[m+1]; //0号单元不用
char
huffman[n+1][m+1];
void
Select(int &s1, int &s2,int j)
{
int i;
int tmp1 = 10000, tmp2 =
10000;
for(i = 1; i
<= j; i++)
{
if(HuffmanTree[i].parent == 0)
{
if(HuffmanTree[i].weight < tmp1)
{
tmp1 =
HuffmanTree[i].weight;
s1 = i;
}
else
if(HuffmanTree[i].weight < tmp2)
{
tmp2 =
HuffmanTree[i].weight;
s2= i;
}
}
}
}
void
HuffmanCoding(int weight[],int letter[])
{
int i;
if(n<1)
return;
for(i=1; i<=n;
i++)
{
HuffmanTree[i].weight=weight[i-1];
HuffmanTree[i].lchild=0;
HuffmanTree[i].rchild=0;
HuffmanTree[i].parent=0;
}
for(i=7; i<=m;
i++)
{
HuffmanTree[i].weight=0;
HuffmanTree[i].lchild=0;
HuffmanTree[i].rchild=0;
HuffmanTree[i].parent=0;
}
//Huffman树的建立
for(i=n+1;
i<=m; i++)
{
int s1,s2;
Select(s1,s2,i-1);
HuffmanTree[s1].parent=i;
HuffmanTree[s2].parent=i;
HuffmanTree[i].lchild=s1;
HuffmanTree[i].rchild=s2;
HuffmanTree[i].weight=HuffmanTree[s1].weight+HuffmanTree[s2].weight;
}
char cd[n+1];
int start,c,f;
cd[n-1]= '\0';
for(i=1;
i
{
start=n-1;
for(c=i,f=HuffmanTree[i].parent; f!=0;
c=f,f=HuffmanTree[f].parent)
{
if(HuffmanTree[f].lchild==c)
cd[--start]='0';
else
cd[--start]='1';
}
strcpy(huffman[i],&cd[start]);
}
char x='a';
for(i=1; i<=n;
i++)
{
printf("字符:%c
Huffman编码:%s\n",x++,huffman[i]);
}
}
int
main()
{
int weight[n]=
{1,3,2,4,5};
int letter[n]=
{'a','b','c','d','e'};
HuffmanCoding(weight,letter);
return 0;
}
weight值什么的自己改吧。最好看明白自己写哦。。。。
huffman图像编码C语言,Huffman编码 数据结构 C语言相关推荐
- c语言必背数据结构_C语言实现常用数据结构:简要一览(第1篇
线性表 最简单的一种数据结构,具有相同类型的数据元素组成的序列.顺序表.链表是其两种简单实现. 备注:数组也可以算一种简单的线性表. 链表可以分为:带头结点的简单链表 不带头结点的简单链表静态链表 循 ...
- 23V3有这种C语言表达式吗,数据结构(C语言版第2版_李云清)习题答案2012-12.doc
数据结构(C语言版第2版_李云清)习题答案2012-12.doc 第 1 章 绪论 1.1 什么是数据结构? [答]:数据结构是指按一定的逻辑结构组成的一批数据,使用某种存储结构将这批数据存储 于计算 ...
- 数据结构C语言版字符串,数据结构c语言版
数据结构c语言版是一款非常使用的数据结构课程的编写和教材:它也可将软件作为学习数据结构.算法C程序设计的参数教材,只需要用户学习该软件之后,就算遇到在繁杂的代码也可以清晰的写出来,本书的钱半部分主要介 ...
- 店铺咨询系统c语言,交通咨询系统数据结构c语言word文档良心出品
<交通咨询系统数据结构c语言word文档良心出品>由会员分享,可在线阅读,更多相关<交通咨询系统数据结构c语言word文档良心出品(22页珍藏版)>请在人人文库网上搜索. 1. ...
- c 语言差错编码实验结果,C语言程序设计实验报告(四).doc11111111111111111.doc
C语言程序设计实验报告(四).doc11111111111111111 C语言程序设计实验报告 姓 名吴文重学 号52系 别数学系班级2班主讲教师徐时芳指导教师徐时芳实验日期2011-11-8专业10 ...
- C语言存储编码输出,C语言怎么输出一个菱形
C语言怎么输出一个菱形 C语言是计算机的高级语言,在IT行业被众多的人们是使用,由于IT行业的热门,使用以及学习C语言的人越来越多,掌握一些C语言基本的语言是非常重要的,只有基础知识扎实了,才能在C语 ...
- c语言三元组作用,数据结构 C语言 三元组的具体实现
#include #include //定义常量 方便操作 //可能也没多方便 #define Time 1000 typedef int *Triplet; typedef int Status; ...
- c语言程序设计和数据结构,C语言程序设计与数据结构实践 闵光太主编.pdf
第 一 章 概 论 语 言 是 近 年 来 在 国 内 外 流 行 的 高 级 程 序 设 计 语 言 , 它 既 具 有 高 级 语 言 的 特 点 , 又 具 备 低 级 语 言 的 特 点 , ...
- 数据结构c语言版总结,数据结构:C语言常见算法总结
[1]求最大值与最小值. #include void main() { int num[5],max,min,i; printf(\"请输入5个数字:\") for(i=0;i&l ...
最新文章
- 无csrf防护的html页面,Springs CSRF保护仅* HTML登录页面
- 埋点是什么意思_掌握数据生命周期:初识数据埋点
- 多维数组的行优先和列优先, 数据描述语言
- 001-Ansible-参考http://www.ansible.com.cn/docs/playbooks_intro.html#about-playbooks
- android 调用百度sdk后运行不了,解决android程序中oncreate方法中调用百度地图MKSearchListener接口不执行的问题...
- Python+OpenGL基本图元绘制综合演示
- win102004优化_windows 10新版2004和1909该如何选择
- python.day.04——常用数据类型(一):strList
- 微信小程序:好看的表格样式
- Android日历控件方法,Android日历控件的实现方法
- 计算机应用基础在线题库,计算机应用基础练习试题库完整.doc
- SSD(Single Shot MultiBox Detector)原理详解
- 湖北省2021年高考成绩查询日期,湖北2021年高考查分及志愿填报时间公布!
- [操作系统]进程管理 进程同步、死锁相关、处理机调度
- 顺利通过了CCIE的考试
- 树链剖分——杨子曰算法
- C语言程序设计 密码开锁 指针的介绍
- 服务器所属文件变成nobody,NFS使用autofs挂接后文件属主显示为nobody
- learnpythonthehardway.org_Python学习笔记LearnPythonHardWay
- 骚年~来一起撸一撸,这些面试必问的知识