Huffman(霍夫曼)编码
来源:互联网 发布:vscode 字体设置 编辑:程序博客网 时间:2024/06/08 07:08
#include<iostream>#include<cmath>#include<string.h>using namespace std;#define MAX_NODE 200 typedef char** Huffmancode;typedef struct HTNode{unsigned int Weight;unsigned int Parent, Lchild, Rchild;} HTNode;void Create_Huffman(unsigned n, HTNode HT[], unsigned m){unsigned int w; int k, j;for (k = 1; k <m; k++){if (k <= n){printf("\n Please Input Weight : w = ? ");cin >> w; HT[k].Weight = w;}else HT[k].Weight = 0;HT[k].Parent = HT[k].Lchild = HT[k].Rchild = 0;}for (k = n + 1; k < m; k++){unsigned w1 = 32767, w2 = w1;int p1 = 0, p2 = 0;for (j = 1; j <= k - 1; j++){if (HT[k].Parent == 0){if (HT[j].Weight < w1){w2 = w1; p2 = p1;w1 = HT[j].Weight; p1 = j;}else if (HT[j].Weight<w2){w2 = HT[j].Weight; p2 = j;}}}HT[k].Lchild = p1; HT[k].Rchild = p2;HT[k].Weight = w1 + w2;HT[p1].Parent = k; HT[p2].Parent = k;}}void Huff_coding(unsigned n, HTNode HT[], unsigned m){int k, sp, fp, p;char *cd;Huffmancode HC;HC = (Huffmancode)malloc((n + 1) * sizeof(char *));cd = (char *)malloc(m * sizeof(char));cd[n] = '\0';for (k = 1; k<n + 1; k++){sp = n; p = k; fp = HT[k].Parent;for (; fp != 0; p = fp, fp = HT[p].Parent) {if (HT[fp].Lchild == p) cd[--sp] = '0';else cd[--sp] = '1';}HC[k] = (char *)malloc((n - sp) * sizeof(char));strcpy(HC[k], &cd[sp]);}free(cd);}
1 0
- Huffman(霍夫曼)编码
- 霍夫曼编码(Huffman Coding)
- 霍夫曼编码(Huffman Coding)
- Huffman编码(Huffman树)
- 求解英文字母的霍夫曼(Huffman)编码
- [转]霍夫曼编码(Huffman Coding)
- 霍夫曼编码,Huffman
- 哈夫曼(Huffman )编码
- Huffman 编码 (贪心)
- 哈夫曼编码(Huffman)
- Huffman编码(哈夫曼编码),
- Huffman树编码(数据结构)
- HDU1053 Entropy(huffman编码)
- Huffman树&&Huffman编码
- huffman编码
- huffman编码
- HUFFMAN 编码
- Huffman编码
- hdu 1698 简单区间更新
- 深度学习(四)CNN卷积神经网络推导和实现
- 消息队列(3):在多进程中利用信号量进行同步、传递消息
- linux系统时间和硬件时钟时间 FAQ
- VS2008串口控件操作
- Huffman(霍夫曼)编码
- 258.Add Digits
- 信息的表示和处理·二
- opencv中遍历文件夹下的文件
- 微信小程序底部导航Tabbar
- 怎样推导圆面积计算公式?
- swift textView出现越界的exception
- Java数据库MySQL备份与还原
- 深度学习(五)CNN卷积神经网络代码理解