Huffman樹的應用 (數據結構)
來源:程序員人生 發布時間:2014-12-08 08:19:37 閱讀次數:3574次
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⑴] = '
主站蜘蛛池模板:
欧美性猛交xxxx黑人喷水
|
一区二区三区视频
|
国产毛片a精品毛
|
日本成人不卡
|
最近高清中文字幕大全免费1
|
亚洲产国偷v产偷v自拍自拍
|
欧美一卡二卡3卡4卡无卡免费
|
亚洲免费精品视频
|
精品欧美视频
|
国产视频一区二区在线观看
|
亚洲影院在线
|
午夜影院在线观看
|
一区二区三区在线免费
|
大香伊在人线免费
|
国产一区二区免费视频
|
久久精品久久精品久久精品
|
日韩欧美h|
国内成人精品视频
|
成人国产在线24小时播放视频
|
ppypp日本欧美一区二区
|
日本成年一区久久综合
|
福利午夜|
亚洲处破女网站
|
亚洲性夜
|
日韩欧美亚洲国产一区二区三区
|
五月天婷五月天综合网在线
|
一级做a爰片性色毛片刺激
一级做a爰片性色毛片黄书
|
亚洲男人影院
|
精品国产福利第一区二区三区
|
亚洲伊人久久精品
|
羞羞网页
|
欧美日本一道高清免费3区
欧美日本一道免费一区三区
|
www亚洲免费
|
精品久久免费观看
|
亚洲国产成人资源在线桃色
|
女人的天堂网
|
成人免费体验区福利云点播
|
成人性色生活片免费看爆迷你毛片
|
爱爱精品视频
|
国产第1页|
亚洲国产精品激情在线观看
|