Huffman 编码 数据结构
来源:互联网 发布:淘宝正义哥假货 编辑:程序博客网 时间:2024/04/30 01:52
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
struct ele
{
int value;
int parent;
int Lchild;
int Rchild;
};
void choice(ele *&p,int k,int &s1,int &s2)
{
int i;
int x,y;
int t1,t2;
x=y=1000;
for(i=1;i<k;i++)
{
if(p[i].parent)
continue;
if(p[i].value<y)
{
y=p[i].value;
t2=i;
if(x>y)
{
swap(x,y);
swap(t1,t2);
}
}
}
s1=t1;
s2=t2;
}
void Huffman(ele*&p,int n)
{
if(n<=1)
return ;
else
{
int i,s1,s2;
int m=2*n-1;
p=(ele*)malloc(sizeof(ele)*(m+1));
for(i=1;i<=m;i++)
p[i].parent=p[i].Lchild=p[i].Rchild=0;
for(i=1;i<=n;i++)
scanf("%d",&p[i].value);
for(i=n+1;i<=m;i++)
{
choice(p,i,s1,s2);
p[i].value=p[s1].value+p[s2].value;
p[s1].parent=p[s2].parent=i;
p[i].Lchild=s1;
p[i].Rchild=s2;
}
}
}
int main()
{
int n;
ele *p;
scanf("%d",&n);
Huffman(p,n);
for(int i=1;i<=2*n-1;i++)
printf("%d\n",p[i].value);
return 0;
}
#include<stdlib.h>
#include<iostream>
using namespace std;
struct ele
{
int value;
int parent;
int Lchild;
int Rchild;
};
void choice(ele *&p,int k,int &s1,int &s2)
{
int i;
int x,y;
int t1,t2;
x=y=1000;
for(i=1;i<k;i++)
{
if(p[i].parent)
continue;
if(p[i].value<y)
{
y=p[i].value;
t2=i;
if(x>y)
{
swap(x,y);
swap(t1,t2);
}
}
}
s1=t1;
s2=t2;
}
void Huffman(ele*&p,int n)
{
if(n<=1)
return ;
else
{
int i,s1,s2;
int m=2*n-1;
p=(ele*)malloc(sizeof(ele)*(m+1));
for(i=1;i<=m;i++)
p[i].parent=p[i].Lchild=p[i].Rchild=0;
for(i=1;i<=n;i++)
scanf("%d",&p[i].value);
for(i=n+1;i<=m;i++)
{
choice(p,i,s1,s2);
p[i].value=p[s1].value+p[s2].value;
p[s1].parent=p[s2].parent=i;
p[i].Lchild=s1;
p[i].Rchild=s2;
}
}
}
int main()
{
int n;
ele *p;
scanf("%d",&n);
Huffman(p,n);
for(int i=1;i<=2*n-1;i++)
printf("%d\n",p[i].value);
return 0;
}
0 0
- Huffman编码(数据结构)
- 数据结构 树 Huffman编码
- Huffman 编码 数据结构
- 【数据结构】huffman编码
- 【数据结构】Huffman编码
- 数据结构Huffman编码译码
- 数据结构 Huffman编码实现
- Huffman树及Huffman编码(数据结构)
- Huffman树编码(数据结构)
- HUFFMAN编码进行压缩---【数据结构】
- 数据结构Huffman树及编码
- 数据结构试验-试验8-huffman树、huffman编码
- 数据结构和算法——Huffman树和Huffman编码
- 由Huffman编码以及相关的数据结构
- C语言-数据结构-哈夫曼编码-Huffman-源代码
- Huffman树&&Huffman编码
- huffman编码
- huffman编码
- 正则表达式
- 史上最短小精悍的javascript编写的俄罗斯方块游戏,仅仅60行代码
- Android Bitmap 全面解析(二)加载多张图片的缓存处理 ...
- HDU 4240 Route Redundancy 一条流最大的路径
- Ibatis基础知识:#与$的区别
- Huffman 编码 数据结构
- JNI和NDK学习(1)--搭建开发环境
- java servlet过滤器应用场景
- HTML:各种距离说明scrollLeft,scrollWidth,clientWidth,offsetWidth
- SAXBuilder从String创建Document对象
- 目标板挂载NFS时“rpcbind: server localhost not responding, timed out”解决
- Base64算法实现
- CHeckBox后台版的连级选择(后期添加功能注释,现在直接上代码)
- Visual C# 3.0 新特性概览