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

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

?? lzcomp.c

?? [隨書類]Dos6.0源代碼
?? C
字號:
/* TS = none */
/*
**  LZCOMP.C
*/

#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#include <io.h>
#include <fcntl.h>
#include <stdio.h>

#include "..\sutkcomp.h"

#ifdef OS2SU
#include <doscalls.h>
#endif

#include "lz.h"



/*
**  void  LZInitTree(void)
**
**  For i = 0 to cbBufMax - 1, rson[i] and lson[i] will be the right and
**  left children of node i.  These nodes need not be initialized.
**  Also, dad[i] is the parent of node i.  These are initialized to
**  nilND (= N), which stands for 'not used.'
**  For i = 0 to 255, rson[cbBufMax + i + 1] is the root of the tree
**  for strings that begin with character i.  These are initialized
**  to nilND.  Note there are 256 trees.
*/
void LZInitTree(void)
{
    USHORT  us;

    for (us = 0; us < cbBufMax; us++) 
        {
        rgND[us].ibRingBuf = us;
        rgND[us].pNDpar = &nilND;
        }

    for (us = 0; us < 256; us++)
        rgRoot[us].pNDright = &nilND;
}


/*
**  void  LZDeleteNode(SHORT iND)
**
**  Deletes node p from tree.
*/
void LZDeleteNode(SHORT iND)
{
    register ND *pNDdel = &rgND[iND];
    register ND *pND;
        
    if (pNDdel->pNDpar == &nilND)
        return;                              /* not in tree */

        // if the node is a leaf, the insert ND is easy
    if (pNDdel->pNDright == &nilND)
        pND = pNDdel->pNDleft;
    else if (pNDdel->pNDleft == &nilND)
        pND = pNDdel->pNDright;
    else                      // node to be deleted is an interior node
        {
        pND = pNDdel->pNDleft;

        if (pND->pNDright != &nilND)
            {
            do  {
                pND = pND->pNDright;
                } while (pND->pNDright != &nilND);

            pND->pNDpar->pNDright = pND->pNDleft;
            pND->pNDleft->pNDpar = pND->pNDpar;

            pND->pNDleft = pNDdel->pNDleft;

            pNDdel->pNDleft->pNDpar = pND;
            }
        pND->pNDright = pNDdel->pNDright;
        pNDdel->pNDright->pNDpar = pND;
        }
    pND->pNDpar = pNDdel->pNDpar;

        // set the rigth/left pointer to parent node to new current
    if (pNDdel->pNDpar->pNDright == pNDdel)
        pNDdel->pNDpar->pNDright = pND;
    else
        pNDdel->pNDpar->pNDleft = pND;

    pNDdel->pNDpar = &nilND;
}


/*
** Inserts string of length cbStrMax, ringBuf[r..r+cbStrMax-1], into one of the
** trees (rgRoot[*iString]'th tree) and returns the longest-match position
** and length via the global variables iMatchCur and cbMatchCur.
** If cbMatchCur = cbStrMax, then removes the old node in favor of the new
** one, because the old one will be deleted sooner.
**
** There is a one to one relationship with the i'th position in the ringBuf
** and the i'th position in the rgND.
*/
void LZInsertNode(SHORT iString)
{
    ND *     pND;
    ND  *    pNDNew;
    SHORT    fComp;
    SHORT    cbMatchND;
    BYTE far *  pKey;

    pKey =   &ringBuf[iString];
    pND =    &rgRoot[*pKey];    // start with tree index by first char in string
    pNDNew = &rgND[iString];

    pNDNew->pNDleft = pNDNew->pNDright = &nilND;
    cbMatchCur = 0;
    goto first;

    do {
          // Follow the tree down to the leaves depending on the result
          // of the last string compare.  When you come the a leaf in the
          // tree, you are done and insert the node.
        if (fComp >= 0)
            {
first:
            if (pND->pNDright != &nilND)
                pND = pND->pNDright;
            else
                {
                pND->pNDright = pNDNew;
                pNDNew->pNDpar = pND;
                return;
                }
            }
        else
            {
            if (pND->pNDleft != &nilND)
                pND = pND->pNDleft;
            else
                {
                pND->pNDleft = pNDNew;
                pNDNew->pNDpar = pND;
                return;
                }
            }

          // compare the string at the current node with the string
          // that we are looking for.
        for (cbMatchND = 1; (USHORT)cbMatchND < cbStrMax; cbMatchND++)
            if ((fComp =pKey[cbMatchND]-ringBuf[pND->ibRingBuf+cbMatchND]) != 0)
                break;

          // if the length of the matched string is greater then the
          // current, make the iMatchCur point the pND
        if ((USHORT)cbMatchND > cbMatchCur)
            {
            /* iMatchCur = (ND far *)pND - (ND far *)rgND; */
            unsigned long ul = (unsigned long)((BYTE far *)pND);

            ul -= (unsigned long)((BYTE far *)rgND);
            ul = ul / sizeof(ND);
            if (ul > 0x0000FFFF)
                printf("Assert - Overflow in iMatchCur assignment!\n");
            iMatchCur = (USHORT)ul;

            cbMatchCur = (USHORT)cbMatchND;
            }

          // Search for strings while a less then maxium length string
          // is found
        } while (cbMatchCur < cbStrMax);

      // replace an older ND with the new node in the tree,
      // by replacing the current pND with the new node pNDNew
    pNDNew->pNDleft = pND->pNDleft;
    pND->pNDleft->pNDpar = pNDNew;
    pNDNew->pNDright = pND->pNDright;
    pND->pNDright->pNDpar = pNDNew;

      // insert into left/right side of parent
    pNDNew->pNDpar = pND->pNDpar;

    if (pND->pNDpar->pNDright == pND)
        pND->pNDpar->pNDright = pNDNew;
    else
        pND->pNDpar->pNDleft = pNDNew;

    pND->pNDpar = &nilND;        /* remove old node */
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久美女毛片| 日本久久一区二区| 久久毛片高清国产| 国产呦精品一区二区三区网站| 欧美不卡一区二区三区四区| 精品一区二区三区久久久| 久久亚洲一级片| www.欧美日韩国产在线| 一区二区三区在线播放| 777a∨成人精品桃花网| 久久er99精品| 欧美国产一区视频在线观看| 97久久精品人人澡人人爽| 亚洲妇熟xx妇色黄| 亚洲精品在线电影| 91在线观看一区二区| 亚洲一区二区不卡免费| 精品国产乱码久久久久久蜜臀 | 久热成人在线视频| 久久久久久免费毛片精品| 91亚洲精品久久久蜜桃网站| 亚洲电影视频在线| 久久婷婷国产综合国色天香| 99久久国产综合色|国产精品| 夜色激情一区二区| 精品久久久久一区| 色综合久久久久网| 激情综合色丁香一区二区| 国产精品久久久久影院色老大 | 久久日韩粉嫩一区二区三区| 成人av片在线观看| 男女男精品视频| 国产精品区一区二区三区| 欧美日韩高清一区二区不卡| 国产传媒一区在线| 亚洲妇熟xx妇色黄| 国产精品天美传媒| 日韩欧美综合一区| 99久久777色| 国产乱码精品一区二区三区忘忧草| 亚洲人成亚洲人成在线观看图片 | 99国产欧美久久久精品| 喷水一区二区三区| 一区二区三区**美女毛片| 亚洲国产精品成人综合| 欧美日韩在线精品一区二区三区激情| 精品一区二区三区香蕉蜜桃| 午夜久久久久久久久久一区二区| 国产日本一区二区| 久久综合九色综合欧美就去吻| 色噜噜久久综合| 成人av在线播放网址| 蜜乳av一区二区| 亚洲一区二区三区小说| 久久嫩草精品久久久精品 | 日韩欧美电影一区| 欧美亚州韩日在线看免费版国语版| 国产精品77777竹菊影视小说| 日韩电影在线看| 亚洲一二三四区不卡| 亚洲免费观看高清完整版在线观看 | 国产日韩欧美一区二区三区乱码 | 久久尤物电影视频在线观看| 欧美视频日韩视频在线观看| 91丨九色丨黑人外教| 成人一级视频在线观看| 精品综合久久久久久8888| 日韩激情av在线| 亚洲小说春色综合另类电影| 亚洲精品中文在线| 亚洲乱码国产乱码精品精可以看 | 亚洲黄色在线视频| 18成人在线视频| 日本一二三不卡| 国产精品少妇自拍| 国产精品久久久久久久久动漫| 久久久午夜精品| 国产亚洲综合色| 久久精品免视看| 欧美国产一区视频在线观看| 中文字幕乱码久久午夜不卡| 国产午夜精品一区二区三区四区| 久久久一区二区| 久久精品男人天堂av| 国产欧美日韩精品在线| 中文字幕乱码日本亚洲一区二区 | 在线日韩av片| 在线观看欧美精品| 欧美美女bb生活片| 日韩免费电影一区| 国产亚洲欧美激情| 成人免费在线视频| 一区二区三区产品免费精品久久75| 亚洲欧美一区二区久久| 午夜精品久久久久久久99樱桃| 亚洲第一成人在线| 精品一区二区综合| 成人丝袜18视频在线观看| 91精品国产色综合久久不卡蜜臀| 3d成人h动漫网站入口| 日韩黄色在线观看| 青青草一区二区三区| 精品一区二区三区在线播放| 国模娜娜一区二区三区| 精品一区二区三区免费观看| 日本午夜精品一区二区三区电影| 一区二区三区国产精华| 亚洲国产另类av| 午夜欧美大尺度福利影院在线看| 亚洲欧美日韩在线不卡| 亚洲人妖av一区二区| 天天做天天摸天天爽国产一区| 欧美精品一级二级三级| 欧美一级黄色大片| 国产精品三级av在线播放| 一区二区成人在线| 精品一区精品二区高清| 99国内精品久久| 日韩亚洲电影在线| 国产精品国产三级国产专播品爱网| 午夜精品视频一区| 粉嫩aⅴ一区二区三区四区| 欧洲亚洲精品在线| 久久久国产精品麻豆| 亚洲电影中文字幕在线观看| 国产在线麻豆精品观看| 91国产免费看| 久久美女高清视频| 日韩国产欧美一区二区三区| 菠萝蜜视频在线观看一区| 91精品国产色综合久久| 亚洲男人的天堂av| 国产在线精品一区二区| 欧美视频三区在线播放| 国产精品久久久99| 麻豆成人免费电影| 精品视频资源站| 国产精品亲子乱子伦xxxx裸| 秋霞午夜鲁丝一区二区老狼| 99久免费精品视频在线观看| 一色屋精品亚洲香蕉网站| 日本免费新一区视频| 色老综合老女人久久久| 亚洲国产精品ⅴa在线观看| 韩国三级在线一区| 欧美精品久久一区| 亚洲一区二区三区四区在线| 成人美女视频在线观看| 久久久久国产免费免费| 看片的网站亚洲| 欧美一二三区精品| 日韩专区中文字幕一区二区| 91久久精品一区二区三| 中文字幕五月欧美| 成人美女视频在线观看18| 久久精品一区蜜桃臀影院| 精品一区二区三区免费| 欧美成人a视频| 麻豆精品国产91久久久久久| 制服丝袜av成人在线看| 亚洲综合偷拍欧美一区色| 91黄色免费看| 亚洲一线二线三线视频| 欧美亚州韩日在线看免费版国语版| 亚洲欧美在线aaa| 99re这里只有精品视频首页| 中文字幕电影一区| 99久久久久久99| 成人免费小视频| 色综合激情久久| 亚洲另类在线一区| 欧美在线观看你懂的| 亚洲高清免费视频| 欧美一级高清片在线观看| 看片网站欧美日韩| 久久久亚洲午夜电影| 国产精品一二三区在线| 国产精品女主播av| 99精品国产视频| 亚洲成人精品一区二区| 欧美日韩国产一级片| 全国精品久久少妇| 国产午夜精品在线观看| 成年人国产精品| 亚洲一区二区三区四区在线观看| 欧美欧美欧美欧美首页| 麻豆久久久久久| 中文字幕国产精品一区二区| 91麻豆123| 日本一区中文字幕| 久久亚洲免费视频| 91在线码无精品| 亚洲电影视频在线| 精品国产91久久久久久久妲己| 国产乱国产乱300精品| 亚洲裸体xxx| 日韩欧美国产高清| 99视频精品在线| 日本欧美一区二区在线观看| 欧美成人官网二区|