亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hfm 2.cpp

?? 一些數據結構源代碼
?? CPP
字號:
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#define  DNUM 64    //define data number 8*8 
#define  LOOP 10000 //times of compression 

typedef struct 
{ 
    unsigned short weight, data; 
    unsigned short parent, lchild, rchild; 
} HuffNode; 

typedef struct 
{ 
    unsigned char code; 
    unsigned short codelength; 
} HuffCode; 

unsigned int fCount[256] = {0}; 
unsigned int data_num; 
unsigned int code_size; 
unsigned int last_bit; 
void FrequencyCount(unsigned char*);         //頻率統計 
void HuffSelect(HuffNode*, int, int*, int*); //從結點中選出權最小的兩個節點 
void HuffmanCodeTable(HuffNode*, HuffCode*); //構造huffman樹,生成huffman編碼表 
void HuffmanCompress(unsigned char*, unsigned char *, HuffCode*); //壓縮數據 
void BitPrint(unsigned char*);               //按位打印結果,用于調試 

void main() 
{ 
    int i, j, loop;                               //variable for loop
    HuffNode hfdata[2*DNUM] = {{0, 0, 0, 0, 0}};  //Huffman node 
    HuffCode code_table[256] = {{0, 0}};          //code table will be searched by subscript 
    unsigned char hfcode[2*DNUM];                 //output code 
    time_t time1, time2; 
/*  unsigned char pixel[DNUM] = { 
    1,2,3,4, 1,2,3,4, 1,2,3,4, 1,1,1,1}; 
*/ 
/*  unsigned char pixel[DNUM] = { 
        139,144,149,153,155,155,155,155, 
        144,151,153,156,159,156,156,156, 
        150,155,160,163,158,156,156,156, 
        159,161,162,160,160,159,159,159, 
        159,160,161,162,162,155,155,155, 
        161,161,161,161,160,157,157,157, 
        162,162,161,163,162,157,157,157, 
        162,162,161,161,163,158,158,158};
*/ 
    unsigned char pixel[DNUM] = { //random data 
        141, 101, 126, 111, 163, 112, 133, 156, 
        103, 144, 111, 176, 117, 120, 188, 187, 
        175, 164, 190, 156, 112, 179, 142, 119, 
        140, 111, 127, 186, 196, 190, 189, 127, 
        185, 103, 185, 110, 192, 139, 159, 104, 
        151, 193, 178, 198, 114, 170, 179, 149, 
        124, 149, 165, 108, 141, 176, 113, 164, 
        101, 140, 120, 126, 173, 189, 158, 184}; 
/*  unsigned char pixel[DNUM] = { 
        202, 221, 159, 183, 41, 136, 247, 66, 
        146, 29, 101, 108, 45, 61, 210, 236, 
        90, 130, 54, 66, 132, 206, 119, 232, 
        184, 135, 96, 78, 120, 41, 231, 203, 
        150, 94, 172, 142, 122, 180, 150, 204, 
        232, 121, 180, 221, 3, 207, 115, 147, 
        72, 149, 169, 121, 76, 208, 235, 43, 
        107, 58, 0, 237, 197, 7, 210, 89}; 
*/ 
    FrequencyCount(pixel); 
    time1 = time(NULL); 
    for (loop=0; loop<LOOP; loop++) { 
        //set huffman nodes data and weight, i=0:255, j=1:64 
        for (i=0, j=1, data_num=0; i<256; i++) { 
            if (fCount[i]) { 
                hfdata[j].weight = fCount[i]; 
                hfdata[j++].data = i; 
                data_num ++; 
            } 
        } 
        //build huffman tree and generate huffman code table 
        HuffmanCodeTable(hfdata, code_table); 
        //compress source data to huffman code using code table 
        HuffmanCompress(pixel, hfcode, code_table); 
        //initial hfdata and code_table 
        for (j=0; j<2*DNUM; j++) { 
            hfdata[j].data=0; 
            hfdata[j].lchild=0; 
            hfdata[j].parent=0; 
            hfdata[j].rchild=0; 
            hfdata[j].weight=0; 
        } 
    } 
    time2 = time(NULL); 
    //conclude 
    printf("\n哈夫曼編碼壓縮圖塊,壓縮報告\n華中科技大學力學系:李美之\n"); 
    printf("\n◎源數據(%d字節):\n ", DNUM); 
    for (i=0; i<DNUM; i++) { 
        printf(i%8==7 ? "%02X\n " : "%02X ", pixel[i]); 
    } 
    printf("\n◎壓縮數據(%d字節):\n ", code_size); 
    for (i=0; i<code_size; i++) { 
        printf(i%8==7 ? "%02X\n " : "%02X ", hfcode[i]); 
    } 
    //打印碼表 
    printf("\n\n◎碼表-編碼字典(%d項)\n", data_num); 
    for (i=0; i<256; i++) { 
        if (code_table[i].codelength) { 
            printf("%3d|%02X: ", i, i); 
            for (j=0; j<code_table[i].codelength; j++) { 
                printf("%d", ((code_table[i].code << j)&0x80)>>7); 
            } 
            printf("\t"); 
        } 
    } 
    printf("\n\n◎壓縮率:%2.0f%% \t壓縮時間:%.3f毫秒\n",(float)code_size/DNUM * 100, 1E3*(time2-time1)/LOOP); 
} 

void BitPrint(unsigned char *hfcode) 
{ 
    int i, j; 
    int endbit = last_bit; 
    unsigned char thebyte; 
    for (i=0; i < code_size-1; i++) { 
        thebyte = hfcode[i]; 
        for (j=0; j<8; j++) { 
            printf("%d", ((thebyte<<j)&0x80)>>7); 
        } 
    } 
    if (last_bit == 7) { 
        endbit = -1; 
    } 
    thebyte = hfcode[i]; 
    for (j=7; j>endbit; j--) { 
        printf("%d", ((thebyte<<(7-j))&0x80)>>7); 
    } 
}

void HuffmanCompress(unsigned char *pixel, unsigned char *hfcode, HuffCode * code_table) 
{ 
    int i, j; 
    int curbit=7; //current bit in _thebyte_ 
    unsigned int bytenum=0; //number of destination code can also be position of byte processed in destination 
    unsigned int ptbyte=0; //position of byte processed in destination 
    unsigned int curlength; //code's length of _curcode_ 
    unsigned char curcode; //current byte's huffman code 
    unsigned char thebyte=0; //destination byte write 
    unsigned char value; //current byte's value (pixel[]) 
    //process every byte 
    for (i=0; i<DNUM; i++) { 
        value = pixel[i]; 
        curcode = (code_table[value]).code; 
        curlength = (code_table[value]).codelength; 
        //move out every bit from curcode to destination 
        for (j=0;j<=curlength;j++) { 
            if ((curcode<<j)&0x80) { 
                thebyte |= (unsigned char)(0x01<<curbit); 
            } 
            curbit --; 
            if (curbit < 0) { 
                hfcode[ptbyte++] = thebyte; 
                thebyte = 0; 
                curbit  = 7; 
                bytenum ++; 
            } 
        } 
    } 
    //think about which bit is the end 
    if (curbit != 7) { 
        hfcode[ptbyte] = thebyte; 
        bytenum ++; 
    } 
    code_size = bytenum; 
    last_bit  = curbit; 
} 

void HuffmanCodeTable(HuffNode *hfdata, HuffCode *code_table) 
{ 
    int i, j; //variable for loop 
    int tree_num = 2*data_num - 1; //node of huffman tree 
    int min1, min2; //two minimum weight 
    int p; //the id of parent node 
    unsigned char curcode; //current code being processing 
    int curlength; //current code's length 
    //build huffman tree 
    for (i=data_num; i<tree_num; i++) { 
        HuffSelect(hfdata, i, &min1, &min2); 
        hfdata[min1].parent = i+1; 
        hfdata[min2].parent = i+1; 
        hfdata[i+1].lchild = min1; 
        hfdata[i+1].rchild = min2; 
        hfdata[i+1].weight = hfdata[min1].weight + hfdata[min2].weight; 
    } 
    //generate huffman code 
    //i present the i th code, j present from leaf to root in huffman tree 
    //hfdata[i].data (0:255) is a byte number 
    //編碼從葉讀到根,按位從高往低壓入一個字節,讀編碼從左向右 
    for (i=1; i<=data_num; i++) { 
        curcode = 0; 
        curlength = 0; 
        for (j=i, p=hfdata[j].parent; p!=0; j=p, p=hfdata[j].parent) { 
            curlength ++; 
            if (j==hfdata[p].lchild) curcode >>= 1; 
            else curcode = (curcode >> 1) | 0x80; //0x80 = 128 = B1000 0000 
        } 
        code_table[hfdata[i].data].code = curcode; 
        code_table[hfdata[i].data].codelength = curlength; 
    } 
} 

void HuffSelect(HuffNode *hfdata, int end, int *min1, int *min2) 
{ 
    int i; //variable for loop 
    int s1, s2; 
    HuffNode wath[30]; 
    for (i=0; i<30; i++) { 
        wath[i] = hfdata[i]; 
    } 
    s1 = s2 = 1; 
    while (hfdata[s1].parent) { 
        s1++; 
    } 
    for (i=2; i<=end; i++) { 
        if (hfdata[i].parent == 0 && hfdata[i].weight < hfdata[s1].weight) { 
            s1 = i; 
        } 
    } 
    while (hfdata[s2].parent || s1 == s2) { 
        s2++; 
    } 
    for (i=1; i<=end; i++) { 
        if (hfdata[i].parent ==0 && hfdata[i].weight < hfdata[s2].weight && (i - s1)) { 
            s2 = i; 
        } 
    } 
    *min1 = s1; 
    *min2 = s2; 
} 

void FrequencyCount(unsigned char *chs) 
{ 
    int i; 
    for (i=0; i<DNUM; i++) { 
        fCount[*(chs+i)] ++; 
    } 
}  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日韩成人av| 91啦中文在线观看| 三级在线观看一区二区| 亚洲丝袜制服诱惑| 中文字幕一区二区三区精华液| 国产精品久久久久久久久图文区| 久久综合久久综合久久综合| 精品乱码亚洲一区二区不卡| 久久综合狠狠综合久久综合88| 精品国产伦理网| 精品va天堂亚洲国产| 中文字幕不卡的av| 一区二区三区日韩欧美精品| 亚洲午夜久久久久久久久久久| 天堂在线一区二区| 久久精品国产秦先生| 国产在线视频一区二区三区| 韩国女主播成人在线| 不卡的看片网站| 91美女片黄在线观看91美女| 色视频欧美一区二区三区| 欧美喷水一区二区| 久久久久国产一区二区三区四区 | 884aa四虎影成人精品一区| yourporn久久国产精品| thepron国产精品| 日本黄色一区二区| 欧美人与性动xxxx| 精品国产一区二区三区忘忧草| 久久综合久色欧美综合狠狠| 久久精品亚洲国产奇米99| 亚洲精品国产成人久久av盗摄| 天堂va蜜桃一区二区三区漫画版| 麻豆成人91精品二区三区| av高清久久久| 日韩欧美一二三区| 亚洲黄色性网站| 蜜桃精品视频在线观看| av不卡免费电影| 日韩精品最新网址| 亚洲视频 欧洲视频| 日本在线不卡一区| 成a人片亚洲日本久久| 欧美一区二区私人影院日本| 中文字幕不卡三区| 丝袜a∨在线一区二区三区不卡| 欧美日韩五月天| 国产精品久久久久久亚洲伦| 麻豆高清免费国产一区| 色综合久久99| 中文字幕一区二区三区不卡| 久久精品99久久久| 在线播放日韩导航| 亚洲综合成人在线| 99久久精品免费| 日本一区免费视频| 国产乱色国产精品免费视频| 欧美精品国产精品| 亚洲成人一区在线| 欧美亚洲免费在线一区| 亚洲特级片在线| av一区二区三区| 国产嫩草影院久久久久| 国产黄色精品网站| 精品国精品国产尤物美女| 午夜日韩在线电影| 欧美色国产精品| 一区二区久久久| 91成人国产精品| 亚洲欧洲av一区二区三区久久| 国产精品一区免费视频| 精品福利在线导航| 久久丁香综合五月国产三级网站| 91精品国产免费| 日韩av一区二区在线影视| 欧美日韩午夜在线视频| 午夜精品一区二区三区免费视频| 一本久久综合亚洲鲁鲁五月天 | 久久一二三国产| 精品在线观看免费| 精品国产91洋老外米糕| 日韩国产在线观看| 精品入口麻豆88视频| 久久国产麻豆精品| 国产日韩亚洲欧美综合| 国产69精品久久久久777| 中文字幕精品一区二区三区精品| 成人激情图片网| 麻豆91在线观看| 久久精品亚洲国产奇米99| 床上的激情91.| 一区二区三区中文字幕精品精品 | 亚洲另类色综合网站| 欧美三级韩国三级日本一级| 麻豆一区二区三| 日本一区二区三区国色天香| 色综合一个色综合| 全国精品久久少妇| 国产欧美日韩亚州综合 | 精品国产精品一区二区夜夜嗨| 国内偷窥港台综合视频在线播放| 国产亚洲污的网站| 在线观看av一区| 激情综合亚洲精品| ㊣最新国产の精品bt伙计久久| 欧美性受极品xxxx喷水| 秋霞影院一区二区| 亚洲欧美视频在线观看| 欧美精品乱码久久久久久按摩| 国内精品第一页| 亚洲欧美色图小说| 久久综合九色综合欧美亚洲| 91蜜桃免费观看视频| 久久国产三级精品| 一区二区三区中文字幕| 久久综合九色综合97婷婷女人 | 久久精品国产免费| 亚洲一区二区三区激情| 久久天堂av综合合色蜜桃网| 欧美在线观看一二区| 成人精品高清在线| 蜜桃久久久久久| 一区二区三区视频在线看| 久久精品在这里| 67194成人在线观看| 日韩精品一区二区三区在线| 色婷婷久久久综合中文字幕| 国产精品1024| 全国精品久久少妇| 亚洲成av人片| 亚洲欧美另类久久久精品 | 成人福利电影精品一区二区在线观看| 首页综合国产亚洲丝袜| 亚洲精品va在线观看| 国产精品卡一卡二| 国产欧美一区二区三区沐欲| 日韩亚洲欧美在线| 欧美另类久久久品| 在线看日本不卡| 99riav久久精品riav| 成人免费毛片高清视频| 国产精品一区二区三区99| 蜜桃视频在线一区| 免费观看在线综合| 婷婷综合另类小说色区| 亚洲影院在线观看| 亚洲一卡二卡三卡四卡| 亚洲综合色成人| 亚洲日本免费电影| 亚洲另类春色校园小说| 尤物av一区二区| 亚洲一区二区三区在线播放| 夜夜嗨av一区二区三区中文字幕 | 日韩极品在线观看| 日本在线播放一区二区三区| 视频一区免费在线观看| 免费观看日韩av| 久久国产夜色精品鲁鲁99| 国内精品写真在线观看| 国产精品888| 成人黄色免费短视频| 91丨porny丨在线| 久久影院午夜论| 国产精品欧美综合在线| 自拍偷拍国产精品| 亚洲亚洲人成综合网络| 亚洲va中文字幕| 久久99久久精品| 成人小视频免费在线观看| 91在线丨porny丨国产| 欧洲激情一区二区| 欧美一卡2卡3卡4卡| 久久久www免费人成精品| 国产精品妹子av| 天堂一区二区在线免费观看| 黄色资源网久久资源365| 99re视频精品| 91精品午夜视频| 欧美国产精品专区| 一区二区三区在线观看视频| 日本欧美一区二区| 成人网男人的天堂| 717成人午夜免费福利电影| 久久网站最新地址| 亚洲一区二区三区美女| 狠狠色丁香九九婷婷综合五月| caoporn国产精品| 欧美肥妇free| 国产精品久久久久久亚洲伦| 五月天激情综合| 北岛玲一区二区三区四区| 欧美日本免费一区二区三区| 国产丝袜美腿一区二区三区| 午夜精品久久久| 国产乱子轮精品视频| 欧美日韩午夜影院| 亚洲欧洲国产专区| 韩国一区二区视频| 欧美日韩一区二区三区在线看| 久久精品视频网|