Huffman樹的應用 (數據結構)
來源:程序員人生 發布時間:2014-12-08 08:19:37 閱讀次數:3576次
Huffman樹的利用:
1、先選擇1篇文章
2、然后統計字符個數
3、對個數不為0字符的進行編碼
4、輸出碼文
5、進行譯碼
上機代碼:
/*************************************************************************
> File Name: Huffman樹的利用.cpp
> Author: zzuspy
> Mail: zzuspy@qq.com
> Created Time: 2014年12月3日 14:30
************************************************************************/
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#define LL long long
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
using namespace std;
typedef struct
{
int weight;
int parent, lchild, rchild;
}HTNode, *HuffmanTree;
typedef char * * HuffmanCode;
int s1, s2;
void Select(HuffmanTree &HT, int n)
{
int i, min;
for(int i=1; i<=n; i++)
{
if(HT[i].parent==0)
{
min = i;
break;
}
}
for(i=1; i<=n; i++)
{
if(HT[i].weight<HT[min].weight && HT[i].parent == 0)min = i;
}
s1 = min;
for(int i=1; i<=n; i++)
{
if(HT[i].parent==0 && i!=s1)
{
min = i;
break;
}
}
for(int i=1; i<=n; i++)
{
if(HT[i].parent == 0 && i!=s1 && HT[i].weight<HT[min].weight && HT[i].weight>=HT[s1].weight) min=i;
}
s2 = min;
}
void HuffmanCoding(HuffmanTree &HT, HuffmanCode &HC, int *w, int n)
{
if(n<=1) return;
int m = 2 * n - 1, i;
HuffmanTree p;
HT = (HuffmanTree)malloc( (m + 1) * sizeof(HTNode));
for( p = HT+1, i = 1; i <= n; i++, p++, w++)
{
p->weight = *w;
p->parent = p->lchild = p->rchild = 0;
}
for(; i <= m; i++, p++)
{
p->weight = p->parent = p->lchild = p->rchild = 0;
}
//輸出這時候Huffman樹
/*for(int i=1; i<=n; i++)
{
printf("%d %d %d %d
", HT[i].weight, HT[i].parent, HT[i].lchild, HT[i].rchild);
}*/
for(i = n + 1; i<=m; i++)
{
Select(HT, i⑴);
//printf("%d %d
", s1, s2);
HT[s1].parent = i; HT[s2].parent = i;
HT[i].lchild = s1; HT[i].rchild = s2;
HT[i].weight = HT[s1].weight + HT[s2].weight;
}
HC = (HuffmanCode)malloc( ( n + 1 ) * sizeof(char *));
char *cd = (char *)malloc( n * sizeof(char) );
cd[n⑴] = '
主站蜘蛛池模板:
欧美激情视频一区二区
|
日本三级在线视频
|
成人福利视频网站
|
日韩欧美精品一区二区三区经典
|
97精品国产97久久久久久免费
|
国产日本亚洲香蕉视频
|
成人免费视
|
久久视频国产
|
国产精品国产三级国产专播精品人
|
粉嫩av网站
|
影视av久久久噜噜噜噜噜三级
|
91精品国产一区二区三区
|
精久久久久久
|
91精品国产欧美一区二区
|
午夜国产福利
|
国产视频久久久久
|
黄色短视频在线播放
|
国产视频a|
香蕉视频色版在线观看
|
久久精品夜夜夜夜夜久久
|
成人国产精品免费观看视频
|
欧美精品一区三区
|
wwwyoujizz日本
|
欧美一区二区三区精品
|
天堂av在线免费观看
|
日本一区免费看
|
久久久精选
|
91精品国产一区二区
|
黄网站在线免费看
|
岛国精品
|
日韩精品久久一区二区三区
|
午夜一区
|
精品国产乱码久久久久久闺蜜
|
黄色一级大片
|
不卡在线
|
中文字幕在线观看第一页
|
av网站免费
|
日韩精品视频在线免费观看
|
欧美高清视频在线
|
欧美精品一二三
|
亚洲精选一区
|