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

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

?? huffman算法源代碼.txt

?? 數據結構里比較常見到的壓縮算法。希望對大家有用。
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
} 
/* initialize freq tree */ 
void StartHuff() 
{ 
        int i, j; 
        for (i = 0; i < N_CHAR; i++) { 
                freq[i] = 1; 
                son[i] = i + T; 
                prnt[i + T] = i; 
        } 
        i = 0; j = N_CHAR; 
        while (j <= R) { 
                freq[j] = freq[i] + freq[i + 1]; 
                son[j] = i; 
                prnt[i] = prnt[i + 1] = j; 
                i += 2; j++; 
        } 
        freq[T] = 0xffff; 
        prnt[R] = 0; 
} 
/* reconstruct freq tree */ 
void reconst() 
{ 
        int i, j, k; 
        unsigned f, l; 
        /* halven cumulative freq for leaf nodes */ 
        j = 0; 
        for (i = 0; i < T; i++) { 
                if (son[i] >= T) { 
                        freq[j] = (freq[i] + 1) / 2; 
                        son[j] = son[i]; 
                        j++; 
                } 
        } 
        /* make a tree : first, connect children nodes */ 
        for (i = 0, j = N_CHAR; j < T; i += 2, j++) { 
                k = i + 1; 
               f = freq[j] = freq[i] + freq[k]; 
                for (k = j - 1; f < freq[k]; k--); 
                k++; 
                l = (j - k) * 2; 
                /* movmem() is Turbo-C dependent 
                   rewritten to memmove() by Kenji */ 
                /* movmem(&freq[k], &freq[k + 1], l); */ 
                (void)memmove(&freq[k + 1], &freq[k], l); 
                freq[k] = f; 
                /* movmem(&son[k], &son[k + 1], l); */ 
                (void)memmove(&son[k + 1], &son[k], l); 
                son[k] = i; 
        } 
        /* connect parent nodes */ 
        for (i = 0; i < T; i++) { 
                if ((k = son[i]) >= T) { 
                        prnt[k] = i; 
                } else { 
                        prnt[k] = prnt[k + 1] = i; 
                } 
        } 
} 
/* update freq tree */ 
void update(int c) 
{ 
        int i, j, k, l; 
        if (freq[R] == MAX_FREQ) { 
                reconst(); 
        } 
        c = prnt[c + T]; 
        do { 
                k = ++freq[c]; 
                /* swap nodes to keep the tree freq-ordered */ 
                if (k > freq[l = c + 1]) { 
                        while (k > freq[++l]); 
                        l--; 
                        freq[c] = freq[l]; 
                       freq[l] = k; 
                        i = son[c]; 
                        prnt[i] = l; 
                        if (i < T) prnt[i + 1] = l; 
                        j = son[l]; 
                        son[l] = i; 
                        prnt[j] = c; 
                        if (j < T) prnt[j + 1] = c; 
                        son[c] = j; 
                        c = l; 
                } 
        } while ((c = prnt[c]) != 0);   /* do it until reaching the root */ 
} 
unsigned code, len; 
void EncodeChar(unsigned c) 
{ 
        unsigned i; 
        int j, k; 
        i = 0; 
        j = 0; 
        k = prnt[c + T]; 
        /* search connections from leaf node to the root */ 
        do { 
                i >>= 1; 
                /* 
                if node's address is odd, output 1 
                else output 0 
                */ 
                if (k & 1) i += 0x8000; 
                j++; 
        } while ((k = prnt[k]) != R); 
        Putcode(j, i); 
        code = i; 
        len = j; 
        update(c); 
} 
void EncodePosition(unsigned c) 
{ 
        unsigned i; 
        /* output upper 6 bits with encoding */ 
        i = c >> 6; 
        Putcode(p_len[i], (unsigned)p_code[i] << 8); 
        /* output lower 6 bits directly */ 
        Putcode(6, (c & 0x3f) << 10); 
} 
void EncodeEnd() 
{ 
        if (putlen) { 
                putc(putbuf >> 8, outfile); 
                codesize++; 
        } 
} 
int DecodeChar() 
{ 
        unsigned c; 
        c = son[R]; 
        /* 
         * start searching tree from the root to leaves. 
         * choose node #(son[]) if input bit == 0 
         * else choose #(son[]+1) (input bit == 1) 
         */ 
        while (c < T) { 
                c += GetBit(); 
               c = son[c]; 
        } 
        c -= T; 
        update(c); 
        return c; 
} 
int DecodePosition() 
{ 
        unsigned i, j, c; 
        /* decode upper 6 bits from given table */ 
        i = GetByte(); 
        c = (unsigned)d_code[i] << 6; 
        j = d_len[i]; 
        /* input lower 6 bits directly */ 
        j -= 2; 
        while (j--) { 
                i = (i << 1) + GetBit(); 
        } 
        return c | i & 0x3f; 
} 
/* Compression */ 
void Encode(void)  /* Encoding/Compressing */ 
{ 
        int  i, c, len, r, s, last_match_length; 
        fseek(infile, 0L, 2); 
        textsize = ftell(infile); 
        if (fwrite(&textsize, sizeof textsize, 1, outfile) < 1) 
                Error("Unable to write");       /* write size of original te 
xt / 
        if (textsize == 0) 
                return; 
        rewind(infile); 
        textsize = 0;                   /* rewind and rescan */ 
        StartHuff(); 
        InitTree(); 
        s = 0; 
        r = N - F; 
        for (i = s; i < r; i++) 
                text_buf[i] = ' '; 
        for (len = 0; len < F && (c = getc(infile)) != EOF; len++) 
                text_buf[r + len] = c; 
        textsize = len; 
        for (i = 1; i <= F; i++) 
                InsertNode(r - i); 
        InsertNode(r); 
        do { 
                if (match_length > len) 
                        match_length = len; 
                if (match_length <= THRESHOLD) { 
                        match_length = 1; 
                        EncodeChar(text_buf[r]); 
                } else { 
                        EncodeChar(255 - THRESHOLD + match_length); 
                        EncodePosition(match_position); 
                } 
                last_match_length = match_length; 
                for (i = 0; i < last_match_length && 
                                (c = getc(infile)) != EOF; i++) { 
                        DeleteNode(s); 
                        text_buf[s] = c; 
                        if (s < F - 1) 
                                text_buf[s + N] = c; 
                        s = (s + 1) & (N - 1); 
                        r = (r + 1) & (N - 1); 
                        InsertNode(r); 
                } 
                if ((textsize += i) > printcount) { 
                        printf("%12ld\r", textsize); 
                        printcount += 1024; 
                } 
                while (i++ < last_match_length) { 
                        DeleteNode(s); 
                        s = (s + 1) & (N - 1); 
                        r = (r + 1) & (N - 1); 
                        if (--len) InsertNode(r); 
                } 
        } while (len > 0); 
        EncodeEnd(); 
        printf("input: %ld bytes\n", textsize); 
        printf("output: %ld bytes\n", codesize); 
} 
void Decode(int pnum,int all)  /* Decoding/Uncompressing */ 
{ 
        int  i, j, k, r, c; 
        unsigned long int  count; 
        if (fread(&textsize, sizeof textsize, 1, infile) < 1) 
                Error("Unable to read");  /* read size of original text */ 
        if (textsize == 0) 
                return; 
        StartHuff(); 
        for (i = 0; i < N - F; i++) 
                text_buf[i] = ' '; 
        r = N - F; 
        for (count = 0; count < textsize; ) { 
                c = DecodeChar(); 
                if (c < 256) { 
                        putc(c, outfile); 
                        text_buf[r++] = c; 
                        r &= (N - 1); 
                        count++; 
                } else { 
                        i = (r - DecodePosition() - 1) & (N - 1); 
                        j = c - 255 + THRESHOLD; 
                        for (k = 0; k < j; k++) { 
                                c = text_buf[(i + k) & (N - 1)]; 
                                putc(c, outfile); 
                                text_buf[r++] = c; 
                                r &= (N - 1); 
                                count++; 
                        } 
                } 
                if (count > printcount) { 
                        process(0,count*100L/textsize); 
                        process(1,pnum+count*(long)all/textsize); 
                        printcount += 1024; 
                } 
        } 
        process(0,99); 
        process(1,pnum+all); 
} 
//解碼調用程序 
int exact(char *s1,char *s2,int pnum,int all) 
{ 
   char s[100]; 
   infile=fopen(s1,"rb"); 
   if(infile==NULL) 
    { 
     sprintf(s,"File %s not found",s1); 
     OutWindow(s); 
     return 1; 
    } 
   sprintf(s,"%s\\%s",destpath,s2); 
   outfile=fopen(s,"wb"); 
   Decode(pnum,all); 
   fclose(infile); 
   fclose(outfile); 
   textsize=0; 
   codesize=0; 
   printcount = 0; 
   getbuf = 0; 
   getlen = 0; 
   putbuf = 0; 
   putlen = 0; 
   return 0; 
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人18视频日本| 亚洲成人自拍一区| 成人激情视频网站| 欧美国产日韩在线观看| 成人av网站免费观看| 亚洲精品视频一区| 欧美日韩不卡一区| 精品一区二区三区在线观看国产| 欧美v亚洲v综合ⅴ国产v| 国产成人丝袜美腿| 亚洲激情在线播放| 日韩欧美中文字幕精品| 成人在线一区二区三区| 亚洲精品国产品国语在线app| 欧美日韩精品一区二区天天拍小说 | 91福利视频网站| 亚洲制服丝袜在线| 26uuu色噜噜精品一区二区| 成年人国产精品| 日产欧产美韩系列久久99| 国产亚洲短视频| 欧美在线影院一区二区| 久久 天天综合| 亚洲精品伦理在线| 欧美成人a在线| 91热门视频在线观看| 美腿丝袜亚洲综合| 国产精品美女久久福利网站| 在线播放中文一区| 国产精品自拍网站| 亚洲一区二区三区四区在线| 亚洲精品在线免费观看视频| 91亚洲国产成人精品一区二区三| 蜜桃视频一区二区| 亚洲天堂2016| 国产偷v国产偷v亚洲高清| 666欧美在线视频| av毛片久久久久**hd| 国产在线一区观看| 石原莉奈一区二区三区在线观看| 国产精品美女久久福利网站| 欧美xfplay| 欧美二区三区91| 日本黄色一区二区| 成人在线综合网| 韩国一区二区在线观看| 日韩精品一区第一页| 亚洲久草在线视频| 欧美国产97人人爽人人喊| 精品乱人伦小说| 欧美日韩成人在线一区| 91高清视频免费看| 99久久婷婷国产| 成人午夜大片免费观看| 激情五月播播久久久精品| 午夜私人影院久久久久| 一区二区免费视频| 自拍偷拍欧美激情| 国产精品久久久久久久第一福利| xf在线a精品一区二区视频网站| 在线电影一区二区三区| 欧美性色黄大片手机版| 91在线视频18| 99视频国产精品| caoporen国产精品视频| 成人激情小说乱人伦| 成人综合婷婷国产精品久久| 国v精品久久久网| 国产成人在线影院| 国产99久久久国产精品潘金网站| 狠狠色丁香久久婷婷综合_中| 精品系列免费在线观看| 经典一区二区三区| 久久er精品视频| 国产一区二区三区视频在线播放| 精品在线观看视频| 激情欧美日韩一区二区| 精品在线视频一区| 国产传媒欧美日韩成人| 国产福利91精品一区| 国产91精品欧美| 99re这里只有精品首页| 91丨porny丨户外露出| 色吧成人激情小说| 欧美日韩国产免费| 欧美成人r级一区二区三区| 2023国产精品| 国产精品国产自产拍高清av| 日韩伦理av电影| 亚洲成av人片一区二区| 美女爽到高潮91| 国产福利精品一区| 91浏览器打开| 欧美久久久久中文字幕| 精品国产在天天线2019| 欧美激情在线看| 夜夜嗨av一区二区三区中文字幕| 亚洲成av人片在www色猫咪| 裸体歌舞表演一区二区| 成人午夜精品一区二区三区| 色综合天天综合狠狠| 69久久夜色精品国产69蝌蚪网| 日韩精品一区在线观看| 国产精品理伦片| 午夜免费久久看| 国产精品一区二区视频| 在线国产电影不卡| 精品日韩99亚洲| 一区二区三区在线免费视频| 蜜桃免费网站一区二区三区| 成人手机在线视频| 欧美熟乱第一页| 国产欧美一区二区三区在线老狼| 有坂深雪av一区二区精品| 激情综合网激情| 色av成人天堂桃色av| 精品国产乱码久久久久久免费| 国产精品传媒视频| 免费人成精品欧美精品| 91网页版在线| 久久青草国产手机看片福利盒子 | 国产精品亚洲а∨天堂免在线| 91麻豆精东视频| 久久亚洲捆绑美女| 亚洲国产成人porn| 懂色中文一区二区在线播放| 欧美日韩黄色影视| 1024亚洲合集| 国产在线看一区| 91麻豆精品国产无毒不卡在线观看 | 久久99国产精品久久99果冻传媒| 99视频在线精品| 久久亚区不卡日本| 蜜桃av噜噜一区| 欧美三级视频在线观看| 日韩一区欧美一区| 国产精品综合一区二区三区| 91麻豆精品国产91久久久资源速度 | 欧美一区二区在线不卡| 亚洲色图清纯唯美| 国产成人三级在线观看| 日韩免费一区二区三区在线播放| 综合激情成人伊人| 成人激情视频网站| 国产视频一区二区在线| 久久成人精品无人区| 在线播放中文一区| 香蕉加勒比综合久久| 在线观看日韩av先锋影音电影院| 欧美国产欧美综合| 国产iv一区二区三区| 2023国产一二三区日本精品2022| 毛片不卡一区二区| 日韩一区二区三区三四区视频在线观看| 亚洲精品欧美综合四区| 99久久精品久久久久久清纯| 欧美激情一区在线观看| 国产不卡视频在线观看| 久久午夜老司机| 国产一区二区成人久久免费影院| 日韩亚洲国产中文字幕欧美| 奇米在线7777在线精品| 91精品综合久久久久久| 日韩在线卡一卡二| 91精品视频网| 免费成人结看片| 26uuuu精品一区二区| 国产精品18久久久久| 国产无人区一区二区三区| 国产高清久久久久| 国产精品久久久久aaaa樱花| eeuss国产一区二区三区| 亚洲免费观看高清完整版在线观看| 色综合久久天天| 亚洲高清久久久| 日韩一区二区三区电影在线观看 | 一区二区久久久| 精品视频1区2区| 日日摸夜夜添夜夜添亚洲女人| 91精品国产综合久久蜜臀| 精品亚洲免费视频| 国产精品国产自产拍高清av| 91精品1区2区| 日精品一区二区| 久久久不卡影院| 91久久久免费一区二区| 无码av免费一区二区三区试看| 日韩一级二级三级| 处破女av一区二区| 亚洲精品成a人| 日韩一级片在线观看| 粉嫩av亚洲一区二区图片| 一区二区高清视频在线观看| 91精品国产综合久久久久久| 狠狠久久亚洲欧美| 亚洲激情图片qvod| 欧美mv日韩mv国产网站| 99久久婷婷国产| 美女www一区二区| 国产精品美女一区二区三区|