青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

liyuxia713

蹣跚前行者

常用鏈接

統(tǒng)計(jì)

Algorithms

C++

最新評(píng)論

HuffMan編碼

* 對(duì)給定的一組權(quán)值,實(shí)現(xiàn)HuffMan編碼,時(shí)間復(fù)雜度1/2n^2
* 第一步:由已知的n個(gè)權(quán)值形成哈夫曼的初態(tài)                                                                  
* 第二步:建立哈夫曼結(jié)點(diǎn)數(shù)組。依次對(duì)前面已建立的結(jié)點(diǎn)作如下處理
*         1. 選擇兩個(gè)權(quán)值最小且無雙親的權(quán)
*         2. 根據(jù)選出來的兩個(gè)權(quán)構(gòu)造新的哈夫曼結(jié)點(diǎn),修改兩個(gè)點(diǎn)父親結(jié)點(diǎn)為新建的節(jié)點(diǎn)
* 第三步:對(duì)哈夫曼樹進(jìn)行哈夫曼編碼:從權(quán)結(jié)點(diǎn)逆序到根節(jié)點(diǎn)寫出01編碼,
          然后再次逆序(正序)存儲(chǔ)到哈夫曼編碼數(shù)組中
  1#include<iostream>
  2#include<iomanip>
  3
  4using std::endl;
  5using std::cout;
  6using std::setw;
  7
  8const int maxlen = 10//HuffMan編碼最大長(zhǎng)度
  9const int MAX = 100//比任何權(quán)重大的一個(gè)數(shù)
 10
 11struct HuffNode
 12{
 13    int weight;
 14    int parent;
 15    int lchild;
 16    int rchild;
 17}
;
 18
 19struct HuffCode
 20{
 21    int bit[maxlen]; //HuffMan 編碼
 22    int length; //HuffMan 編碼長(zhǎng)度
 23    int weight; 
 24}
;
 25
 26void Huffman(int weight[], int n, HuffNode hn[], HuffCode hc[])
 27{
 28    int i,j,l,r; //l,r分別代表新建的節(jié)點(diǎn)所用到的兩個(gè)結(jié)點(diǎn)
 29    int min1,min2; //存儲(chǔ)每次選擇的最小的兩個(gè)權(quán)
 30
 31    for(i = 0; i != 2*- 1++i) //create Huffman Node,step 1
 32    {
 33        if(i < n)     hn[i].weight= weight[i];
 34        else hn[i].weight = 0;
 35        hn[i].parent = 0;
 36        hn[i].lchild = hn[i].rchild = -1;
 37    }

 38    for(i = 0; i != n-1++i) //create Huffman Node, step 2
 39    {
 40        min1 = min2 = MAX;
 41        l = r = 0;
 42        /* 下面的一段程序本來是想直接通過輸入值確定min1,min2的初始值的,因?yàn)橄裆厦婺莻€(gè)MAX,不知如何給。
 43        但是這個(gè)代碼錯(cuò)了,因?yàn)閚+i-1,n+i-2不能保證其parent=0,還沒想到其他方法
 44        min1 = hn[n+i-1].weight;        
 45        min2 = hn[n+i-2].weight;
 46        l = n+i-1;
 47        r = n+i-2;
 48        if(min1 > min2)
 49        {
 50            int temp = min1;
 51            min1 = min2;
 52            min2 = temp;
 53            int t = l;
 54            l = r;
 55            r = t;
 56        }
 57        */

 58        //find two minimum data
 59        for(j = 0; j != n+i; j++
 60        {            
 61            if(hn[j].weight < min1 && hn[j].parent == 0)
 62            {
 63                min2 = min1;
 64                min1 = hn[j].weight;
 65                r = l;
 66                l = j;
 67            }

 68            else if(hn[j].weight < min2 && hn[j].parent == 0)
 69            {
 70                min2 = hn[j].weight;
 71                r = j;
 72            }

 73            else ;
 74        }

 75
 76        //create a new Huffman Node
 77        hn[n+i].weight = min1+min2; 
 78        hn[l].parent = n+i;
 79        hn[r].parent = n+i;
 80        hn[n+i].lchild = l;
 81        hn[n+i].rchild = r;
 82    }

 83
 84    int temp[maxlen]; //在此逆序存儲(chǔ)Huffman編碼
 85    
 86    for(i = 0; i != n; ++i)
 87    {
 88        j = 0;
 89        int child = i;
 90        int parent = hn[i].parent;
 91        while(hn[child].parent != 0//逆序存儲(chǔ)
 92        {
 93            if(hn[parent].lchild == child) temp[j++= 0;
 94            else temp[j++= 1;
 95            child = parent;
 96            parent = hn[parent].parent;
 97        }

 98        
 99        //正序存儲(chǔ)到HuffCode中
100        int k=0;
101        hc[i].length = j;
102        hc[i].weight = weight[i];
103        while(j) hc[i].bit[k++= temp[--j];
104    }

105
106}

107
108const int N = 7;
109
110int main()
111{
112    int a[N] = {4,2,6,8,3,2,1};
113    HuffNode *hn = new HuffNode[2*N-1];
114    HuffCode *hc = new HuffCode[N];
115
116    Huffman(a,N,hn,hc);
117
118    for(int i=0; i < 2*-1++i)
119    {
120        cout << setw(3<< hn[i].weight << setw(3<< hn[i].parent << setw(3<< hn[i].lchild << setw(3<< hn[i].rchild <<endl;
121    }

122    for(int j=0; j != N; ++j)
123    {
124        cout << "weight = " << hc[j].weight << ", code = ";
125        for(int k = 0; k != hc[j].length; ++k) cout << hc[j].bit[k];
126        cout << endl;
127    }

128    return 0;
129}

posted on 2009-05-07 21:07 幸運(yùn)草 閱讀(787) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Data Structure

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区日韩精品| 欧美在线视频在线播放完整版免费观看 | 免费美女久久99| 欧美一区二区三区精品电影| 欧美在线视频免费观看| 久久九九免费| 欧美不卡激情三级在线观看| 欧美mv日韩mv亚洲| 日韩亚洲欧美精品| 欧美在线视频二区| 美女精品在线观看| 欧美日韩中文字幕日韩欧美| 国产亚洲高清视频| 亚洲精品乱码久久久久久蜜桃麻豆 | 久久精品国产亚洲一区二区| 美国十次成人| 国产精品无码永久免费888| 国产综合网站| 国产精品99久久久久久宅男 | 欧美人妖另类| 国产日韩欧美日韩大片| 亚洲电影免费观看高清完整版| 日韩视频免费| 久久激情网站| 久久久久久精| 欧美午夜大胆人体| 国模 一区 二区 三区| 亚洲高清久久| 亚洲欧美日韩一区二区| 猛干欧美女孩| 亚洲一区二区三区在线播放| 欧美.日韩.国产.一区.二区| 国产女主播视频一区二区| 亚洲精品欧美激情| 久久人人爽爽爽人久久久| 亚洲美女啪啪| 麻豆精品在线视频| 国产一区二区丝袜高跟鞋图片| 一本色道久久综合| 欧美激情精品久久久久久| 欧美亚洲一区在线| 国产精品美女一区二区| 一区二区三区日韩欧美| 欧美高清你懂得| 久久久久久久久久久久久久一区| 国产精品另类一区| 中文在线资源观看网站视频免费不卡 | 影音先锋亚洲电影| 欧美中文字幕在线| 亚洲午夜91| 国产精品国产三级国产专区53 | 欧美资源在线| 国产乱码精品一区二区三区av| 日韩视频在线免费| 亚洲黄色一区二区三区| 欧美一区二区三区在线看| 国产精品国产精品| 亚洲在线一区二区| 亚洲最新色图| 欧美性大战久久久久久久| 在线亚洲国产精品网站| 亚洲美女视频在线观看| 欧美午夜在线视频| 亚洲欧美精品| 午夜久久99| 国内精品久久久| 老鸭窝毛片一区二区三区| 久久久久久久久蜜桃| 一区二区三区在线视频播放 | 亚洲免费影视| 国内外成人免费激情在线视频 | 亚洲破处大片| 欧美日韩国产成人在线免费| 亚洲天堂av在线免费| 亚洲视频日本| 一区免费观看视频| 亚洲激情在线观看视频免费| 在线成人激情视频| 国产亚洲美州欧州综合国| 久久精品国产99| 性色av一区二区三区红粉影视| 国产一区二区三区在线观看免费| 女同性一区二区三区人了人一 | 欧美精品一区在线发布| 亚洲欧美日韩直播| 久久国产一二区| 亚洲日本欧美在线| 99热这里只有精品8| 国产亚洲免费的视频看| 亚洲国产精彩中文乱码av在线播放| 欧美精选午夜久久久乱码6080| 中文欧美日韩| 久久五月激情| 亚洲一区二区三区在线| 久久经典综合| 亚洲精选中文字幕| 亚洲午夜电影网| 国产日韩1区| 亚洲成色精品| 国产精品色午夜在线观看| 久久青青草原一区二区| 欧美精品综合| 裸体歌舞表演一区二区| 欧美日韩国产一级片| 免费成人激情视频| 国产精品v欧美精品v日韩精品| 亚洲欧美日韩一区二区在线| 一区二区三区鲁丝不卡| 国产亚洲制服色| 99精品国产高清一区二区| 激情久久一区| 一级日韩一区在线观看| 在线日韩一区二区| 欧美一区91| 亚洲免费视频成人| 蜜桃av噜噜一区| 久久免费高清| 欧美日韩hd| 91久久精品日日躁夜夜躁欧美| 国产精品伦一区| 日韩视频亚洲视频| 亚洲美女黄色片| 另类天堂av| 美女尤物久久精品| 一区在线播放视频| 欧美亚洲日本国产| 欧美亚洲一区二区在线| 欧美日本三区| 91久久综合| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美一区二区三区四区在线观看| 欧美一区二区三区成人| 国产精品久久久久久久久久尿 | 欧美a级片网站| 欧美fxxxxxx另类| 永久91嫩草亚洲精品人人| 久久黄色级2电影| 老司机亚洲精品| 亚洲人成网站色ww在线| 久久精品毛片| 欧美黄色免费网站| 久久成人国产精品| 国产欧美日韩另类视频免费观看| 中文精品99久久国产香蕉| 亚洲午夜在线观看| 国产精品国色综合久久| 亚洲综合二区| 久久久精品日韩| 亚洲电影下载| 欧美连裤袜在线视频| 宅男噜噜噜66一区二区| 欧美一区二区视频免费观看| 激情六月婷婷综合| 欧美不卡高清| 在线综合亚洲| 另类综合日韩欧美亚洲| 亚洲激情女人| 欧美视频中文在线看 | 欧美日韩福利视频| 亚洲手机在线| 久久视频免费观看| 亚洲久久成人| 国产精品一区二区欧美| 久久精品视频在线播放| 亚洲经典三级| 久久精品国产77777蜜臀| 亚洲国产日本| 国产精品国产三级国产aⅴ无密码| 久久aⅴ乱码一区二区三区| 欧美激情久久久| 亚洲欧美日本精品| 在线精品观看| 欧美四级电影网站| 久久久久久久综合色一本| 亚洲国产成人一区| 欧美在线3区| 99在线视频精品| 狠狠色噜噜狠狠色综合久 | 久久精品中文字幕免费mv| 亚洲电影成人| 久久频这里精品99香蕉| 亚洲专区免费| 136国产福利精品导航网址应用| 欧美日韩精品中文字幕| 久久黄色网页| 亚洲一区黄色| 亚洲电影免费| 久久av一区二区| 日韩一级二级三级| 精品成人在线观看| 国产精品美女午夜av| 欧美成人精品一区二区| 欧美专区在线观看| 亚洲欧美区自拍先锋| 亚洲精品免费一二三区| 免费h精品视频在线播放| 久久国产精彩视频| 午夜精品99久久免费| 99爱精品视频| 亚洲高清二区|