哈夫曼编码(Huffman)
来源:互联网 发布:上瘾网络剧资源 编辑:程序博客网 时间:2024/06/03 15:10
今天看数据结构,看到哈夫曼编码。感觉挺有意思的。哈夫曼树的应用应该很多吧,还刚学,以后多深入看看。
#include <iostream>#include <cstdio>#include <stack>#include <algorithm>#include <queue>//#include <functional>#include <cstring>#define Max 100000000using namespace std;struct node{ int ww; int parent,left,right;};struct pp{ int m; int root; node head[100];};int x[50];string y[50];pp Huffman(int m){ pp shu; shu.m=m; int m1=Max,m2=Max; for (int number=0;number<2*m-1;number++) { shu.head[number].ww=-1,shu.head[number].parent=-1,shu.head[number].left=-1, shu.head[number].right=-1; if(number<m) { shu.head[number].ww=x[number]; } } for (int number1=0;number1<m-1;number1++) { int x1=-1,x2=-1; m1=Max,m2=Max; for (int number2=0;number2<number1+m;number2++) { if (shu.head[number2].ww<m1&&shu.head[number2].parent==-1) { x2=x1,m2=m1; x1=number2; m1=shu.head[number2].ww; } else if (shu.head[number2].ww<m2&&shu.head[number2].parent==-1) { x2=number2; m2=shu.head[number2].ww; } } shu.head[x1].parent=m+number1; shu.head[x2].parent=m+number1; shu.head[m+number1].left=x1; shu.head[m+number1].right=x2; shu.head[m+number1].ww=m1+m2; } return shu;}void qian(pp shu,int num,string all){ string p=all; int flag=0; if (shu.head[num].left!=-1) { flag=1; all+='0'; qian(shu,shu.head[num].left,all); } if (shu.head[num].right!=-1) { if (flag==1)all=p; all+='1'; qian(shu,shu.head[num].right,all); } if (shu.head[num].left==-1&&shu.head[num].right==-1) { y[num]=all; }}//用来输出哈夫曼编码的。
0 0
- 哈夫曼(Huffman )编码
- 哈夫曼编码(Huffman)
- Huffman编码(哈夫曼编码),
- Huffman编码(Huffman树)
- 哈夫曼(huffman)树和哈夫曼编码
- 哈夫曼(huffman)树和哈夫曼编码
- [非原创] 哈夫曼(Huffman )编码
- poj 1521 Entropy huffman(哈夫曼)编码
- Matlab 图像处理-哈夫曼编码(huffman)
- 哈夫曼(Huffman)编码与解码
- 哈夫曼(Huffman)编码
- 哈夫曼编码-Huffman
- Huffman 编码 (贪心)
- Huffman(霍夫曼)编码
- 贪心算法——Huffman编码(哈夫曼编码)
- 贪心算法——Huffman编码(哈夫曼编码) 收藏
- Huffman(哈夫曼) 编码压缩算法
- 贪心算法 - 哈夫曼编码 Huffman
- 基于链表的容器类bag实现
- NOIP2016#模拟考试 Day.2# T1 改错
- Spring MVC + mybatis实现的注册登录
- Android 6.0 拨号检索功能分析
- 第46课:Spark中的新解析引擎Catalyst源码初探
- 哈夫曼编码(Huffman)
- 汉诺塔
- java基础Day03
- 韦东山毕业班视频git安装不成功解决办法
- sqlserver+asp.net+devextreme从零开始(1)
- Android 6.0 通话记录生成保存和读取显示
- LocalBroadcastManager 的使用
- tjut 4862
- 输入三个正整数进行从小到大的排序