日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > 數(shù)據(jù)結(jié)構(gòu)例程――哈夫曼樹

數(shù)據(jù)結(jié)構(gòu)例程――哈夫曼樹

來源:程序員人生   發(fā)布時間:2016-04-20 10:12:14 閱讀次數(shù):2428次

本文是數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)系列(6):樹和2叉樹中第15課時哈夫曼樹的例程。

這里寫圖片描述

#include <stdio.h> #include <string.h> #define N 50 //葉子結(jié)點數(shù) #define M 2*N⑴ //樹中結(jié)點總數(shù) //哈夫曼樹的節(jié)點結(jié)構(gòu)類型 typedef struct { char data; //結(jié)點值 double weight; //權(quán)重 int parent; //雙親結(jié)點 int lchild; //左孩子結(jié)點 int rchild; //右孩子結(jié)點 } HTNode; //每一個節(jié)點哈夫曼編碼的結(jié)構(gòu)類型 typedef struct { char cd[N]; //寄存哈夫曼碼 int start; } HCode; //構(gòu)造哈夫曼樹 void CreateHT(HTNode ht[],int n) { int i,k,lnode,rnode; double min1,min2; for (i=0; i<2*n-1; i++) //所有結(jié)點的相干域置初值⑴ ht[i].parent=ht[i].lchild=ht[i].rchild=-1; for (i=n; i<2*n-1; i++) //構(gòu)造哈夫曼樹 { min1=min2=32767; //lnode和rnode為最小權(quán)重的兩個結(jié)點位置 lnode=rnode=-1; for (k=0; k<=i-1; k++) if (ht[k].parent==-1) //只在還沒有構(gòu)造2叉樹的結(jié)點中查找 { if (ht[k].weight<min1) { min2=min1; rnode=lnode; min1=ht[k].weight; lnode=k; } else if (ht[k].weight<min2) { min2=ht[k].weight; rnode=k; } } ht[i].weight=ht[lnode].weight+ht[rnode].weight; ht[i].lchild=lnode; ht[i].rchild=rnode; ht[lnode].parent=i; ht[rnode].parent=i; } } //實現(xiàn)哈夫曼編碼 void CreateHCode(HTNode ht[],HCode hcd[],int n) { int i,f,c; HCode hc; for (i=0; i<n; i++) //根據(jù)哈夫曼樹求哈夫曼編碼 { hc.start=n; c=i; f=ht[i].parent; while (f!=-1) //循序直到樹根結(jié)點 { if (ht[f].lchild==c) //處理左孩子結(jié)點 hc.cd[hc.start--]='0'; else //處理右孩子結(jié)點 hc.cd[hc.start--]='1'; c=f; f=ht[f].parent; } hc.start++; //start指向哈夫曼編碼最開始字符 hcd[i]=hc; } } //輸出哈夫曼編碼 void DispHCode(HTNode ht[],HCode hcd[],int n) { int i,k; double sum=0,m=0; int j; printf(" 輸出哈夫曼編碼: "); //輸出哈夫曼編碼 for (i=0; i<n; i++) { j=0; printf(" %c: ",ht[i].data); for (k=hcd[i].start; k<=n; k++) { printf("%c",hcd[i].cd[k]); j++; } m+=ht[i].weight; sum+=ht[i].weight*j; printf(" "); } printf(" 平均長度=%g ",1.0*sum/m); } int main() { int n=8,i; //n表示初始字符串的個數(shù) char str[]= {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'}; double fnum[]= {0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.1}; HTNode ht[M]; HCode hcd[N]; for (i=0; i<n; i++) { ht[i].data=str[i]; ht[i].weight=fnum[i]; } printf(" "); CreateHT(ht,n); CreateHCode(ht,hcd,n); DispHCode(ht,hcd,n); printf(" "); return 0; }

版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产精品视频久久久 | 国产精品久久久久国产a级 中文字幕影院 | 自拍偷拍导航 | 黄色av网站在线观看 | 久热国产精品视频一区二区三区 | 欧美日韩99 | 99精品视频在线免费观看 | 欧美国产精品一区二区三区 | 视频一区在线观看 | 欧美一级片在线观看 | 国产1区 | 日产精品久久久久 | 欧美精品一区二区三区在线 | 国产精品久久久久久久久久久免费看 | 黄色一级视频 | 国产精品电影 | 成人av一区二区三区 | 日韩三级影视 | 国产精品178页| 色婷婷av久久久久久久 | 日韩免费精品 | 中文字幕亚洲电影 | 69xxx免费| 国产精品久久久久久久久久久久冷 | 久久久久成人精品 | 久久久久久女乱国产 | 黄色美女免费网站 | 日本特黄a级高清免费大片 国产小视频在线 | 日韩一区二区三区精品 | 中文自拍 | 久久综合久久综合久久 | 日本一区免费 | 国产色av | 91麻豆精品国产91久久久资源速度 | 免费国产一区 | 亚洲毛片 | 精品黄色片 | 欧美在线一区二区 | 国产一区二区三区电影在线观看 | 天堂网avav | 蜜桃视频一区二区三区在线观看 |