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

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

?? skl.c

?? 排序的算法
?? C
字號:
/* skip list */

#include <stdio.h>
#include <stdlib.h>

/* implementation dependend declarations */
typedef enum {
    STATUS_OK,
    STATUS_MEM_EXHAUSTED,
    STATUS_DUPLICATE_KEY,
    STATUS_KEY_NOT_FOUND
} statusEnum;

typedef int keyType;            /* type of key */

/* user data stored in tree */
typedef struct {
    int stuff;                  /* optional related data */
} recType;

#define compLT(a,b) (a < b)
#define compEQ(a,b) (a == b)

/* levels range from (0 .. MAXLEVEL) */
#define MAXLEVEL 15

typedef struct nodeTag {
    keyType key;                /* key used for searching */
    recType rec;                /* user data */
    struct nodeTag *forward[1]; /* skip list forward pointer */
} nodeType;

/* implementation independent declarations */
typedef struct {
    nodeType *hdr;              /* list Header */
    int listLevel;              /* current level of list */
} SkipList;

SkipList list;                  /* skip list information */

#define NIL list.hdr

statusEnum insert(keyType key, recType *rec) {
    int i, newLevel;
    nodeType *update[MAXLEVEL+1];
    nodeType *x;

   /***********************************************
    *  allocate node for data and insert in list  *
    ***********************************************/

    /* find where key belongs */
    x = list.hdr;
    for (i = list.listLevel; i >= 0; i--) {
        while (x->forward[i] != NIL 
          && compLT(x->forward[i]->key, key))
            x = x->forward[i];
        update[i] = x;
    }
    x = x->forward[0];
    if (x != NIL && compEQ(x->key, key)) 
        return STATUS_DUPLICATE_KEY;

    /* determine level */
    for (
      newLevel = 0; 
      rand() < RAND_MAX/2 && newLevel < MAXLEVEL; 
      newLevel++);

    if (newLevel > list.listLevel) {
        for (i = list.listLevel + 1; i <= newLevel; i++)
            update[i] = NIL;
        list.listLevel = newLevel;
    }

    /* make new node */
    if ((x = malloc(sizeof(nodeType) + newLevel*sizeof(nodeType *))) == 0)
        return STATUS_MEM_EXHAUSTED;
    x->key = key;
    x->rec = *rec;

    /* update forward links */
    for (i = 0; i <= newLevel; i++) {
        x->forward[i] = update[i]->forward[i];
        update[i]->forward[i] = x;
    }
    return STATUS_OK;
}

statusEnum delete(keyType key) {
    int i;
    nodeType *update[MAXLEVEL+1], *x;

   /*******************************************
    *  delete node containing data from list  *
    *******************************************/

    /* find where data belongs */
    x = list.hdr;
    for (i = list.listLevel; i >= 0; i--) {
        while (x->forward[i] != NIL 
          && compLT(x->forward[i]->key, key))
            x = x->forward[i];
        update[i] = x;
    }
    x = x->forward[0];
    if (x == NIL || !compEQ(x->key, key)) return STATUS_KEY_NOT_FOUND;

    /* adjust forward pointers */
    for (i = 0; i <= list.listLevel; i++) {
        if (update[i]->forward[i] != x) break;
        update[i]->forward[i] = x->forward[i];
    }

    free (x);

    /* adjust header level */
    while ((list.listLevel > 0)
    && (list.hdr->forward[list.listLevel] == NIL))
        list.listLevel--;

    return STATUS_OK;
}

statusEnum find(keyType key, recType *rec) {
    int i;
    nodeType *x = list.hdr;

   /*******************************
    *  find node containing data  *
    *******************************/

    for (i = list.listLevel; i >= 0; i--) {
        while (x->forward[i] != NIL 
          && compLT(x->forward[i]->key, key))
            x = x->forward[i];
    }
    x = x->forward[0];
    if (x != NIL && compEQ(x->key, key)) {
        *rec = x->rec;
        return STATUS_OK;
    }
    return STATUS_KEY_NOT_FOUND;
}

void initList() {
    int i;

   /**************************
    *  initialize skip list  *
    **************************/

    if ((list.hdr = malloc(
            sizeof(nodeType) + MAXLEVEL*sizeof(nodeType *))) == 0) {
        printf ("insufficient memory (initList)\n");
        exit(1);
    }
    for (i = 0; i <= MAXLEVEL; i++)
        list.hdr->forward[i] = NIL;
    list.listLevel = 0;
}

int main(int argc, char **argv) {
    int i, maxnum, random;
    recType *rec;
    keyType *key;
    statusEnum status;


    /* command-line:
     *
     *   skl maxnum [random]
     *
     *   skl 2000
     *       process 2000 sequential records
     *   skl 4000 r
     *       process 4000 random records
     *
     */

    maxnum = atoi(argv[1]);
    random = argc > 2;

    initList();

    if ((rec = malloc(maxnum * sizeof(recType))) == 0) {
        fprintf (stderr, "insufficient memory (rec)\n");
        exit(1);
    }
    if ((key = malloc(maxnum * sizeof(keyType))) == 0) {
        fprintf (stderr, "insufficient memory (key)\n");
        exit(1);
    }

    if (random) {
        /* fill "a" with unique random numbers */
        for (i = 0; i < maxnum; i++) key[i] = rand();
        printf ("ran, %d items\n", maxnum);
    } else {
        for (i = 0; i < maxnum; i++) key[i] = i;
        printf ("seq, %d items\n", maxnum);
    }

    for (i = 0; i < maxnum; i++) {
        status = insert(key[i], &rec[i]);
        if (status) printf("pt1: error = %d\n", status);
    }

    for (i = maxnum-1; i >= 0; i--) {
        status = find(key[i], &rec[i]);
        if (status) printf("pt2: error = %d\n", status);
    }

    for (i = maxnum-1; i >= 0; i--) {
        status = delete(key[i]);
        if (status) printf("pt3: error = %d\n", status);
    }
    return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲人在线观看| 97se狠狠狠综合亚洲狠狠| 国产亚洲精品bt天堂精选| 欧洲精品在线观看| 日韩视频一区二区在线观看| 精品综合久久久久久8888| 天堂蜜桃一区二区三区 | 夜夜亚洲天天久久| 一区二区三区久久久| 亚洲精品国产无天堂网2021| 亚洲美女免费在线| 一区二区三区在线视频播放| 亚洲一卡二卡三卡四卡五卡| 亚洲电影中文字幕在线观看| 午夜久久久久久电影| 日韩和欧美一区二区| 麻豆精品视频在线观看| 国产成人综合自拍| 三级成人在线视频| 91精品国产一区二区三区| 国产一区二区三区高清播放| 国产99精品视频| av不卡一区二区三区| 欧美私人免费视频| 26uuu亚洲综合色欧美| 国产精品久久福利| 午夜私人影院久久久久| 激情成人午夜视频| 91免费版pro下载短视频| 欧美日韩色一区| 国产欧美精品一区二区色综合| 中文字幕亚洲精品在线观看| 五月婷婷综合激情| 处破女av一区二区| 欧美日韩激情一区| 久久久.com| 午夜不卡av免费| 国产精品91一区二区| 欧美亚洲国产一区二区三区va | 国产一区二区不卡在线| 一本大道久久a久久综合婷婷| 欧美一区二区网站| 亚洲色图都市小说| 国产专区欧美精品| 欧美日韩一区久久| 国产精品入口麻豆原神| 免播放器亚洲一区| 色婷婷综合久久久久中文一区二区| 日韩欧美国产综合一区| 亚洲欧美另类久久久精品| 另类小说一区二区三区| 欧美亚洲日本一区| 自拍偷在线精品自拍偷无码专区| 国产在线视频精品一区| 欧美色图在线观看| 亚洲男同性恋视频| 丁香另类激情小说| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲电影一区二区三区| 91天堂素人约啪| 中文在线资源观看网站视频免费不卡 | 91亚洲国产成人精品一区二区三 | 成人涩涩免费视频| 久久亚洲精品小早川怜子| 日韩av中文字幕一区二区三区| 91久久久免费一区二区| 中文字幕成人av| 国产精品亚洲第一| 久久久久九九视频| 国产精品一区二区不卡| 久久精品亚洲精品国产欧美| 精品一区二区影视| 精品日本一线二线三线不卡 | 久久久不卡影院| 久久99精品久久久久久| 精品免费视频.| 国产乱一区二区| 精品久久免费看| 国产老肥熟一区二区三区| 精品国产乱码久久久久久久| 精品一区二区三区免费视频| 欧美精品一区视频| 国产精品综合网| 国产精品久久久久久福利一牛影视 | 国产无人区一区二区三区| 国产综合久久久久影院| 国产日韩精品视频一区| 大胆欧美人体老妇| 亚洲美女在线国产| 欧美日韩中文字幕精品| 天堂av在线一区| 日韩欧美一区二区在线视频| 久久国产剧场电影| 国产欧美一区二区精品性| 懂色av噜噜一区二区三区av| 欧美激情资源网| 色综合久久中文字幕综合网| 亚洲午夜电影在线| 欧美一区二区在线免费观看| 精品一区二区三区久久久| 中文字幕免费观看一区| 在线区一区二视频| 毛片不卡一区二区| 国产午夜亚洲精品理论片色戒 | 一区二区三区四区在线| 欧美日韩高清一区二区| 狠狠狠色丁香婷婷综合激情| 中文字幕在线观看不卡| 欧美日韩一区二区在线观看| 日本91福利区| 亚洲色图欧洲色图| 91麻豆精品国产| 丁香婷婷综合网| 日韩va亚洲va欧美va久久| 久久精品视频免费| 欧美日韩一区二区不卡| 国产一区二区三区免费| 一区二区三区不卡在线观看| 欧美va亚洲va香蕉在线| 97精品视频在线观看自产线路二| 亚洲a一区二区| 中文字幕国产一区二区| 欧美一区二区性放荡片| 一本色道久久综合狠狠躁的推荐| 激情文学综合网| 亚洲国产精品欧美一二99| 中文幕一区二区三区久久蜜桃| 5月丁香婷婷综合| 一本久久精品一区二区| 国产精品一二二区| 麻豆精品久久久| 视频在线观看91| 亚洲精品欧美专区| 国产精品久久三区| 久久色在线视频| 日韩欧美激情四射| 欧美久久一区二区| 欧美亚洲一区二区在线| 一本到一区二区三区| 欧美做爰猛烈大尺度电影无法无天| 国产一区二区三区在线观看免费 | 欧美三日本三级三级在线播放| 国产麻豆视频一区二区| 蜜桃久久久久久| 日韩国产精品91| 日日夜夜一区二区| 天天av天天翘天天综合网色鬼国产 | 国产精品网站在线观看| 欧美videossexotv100| 91.com视频| 在线看日本不卡| 欧美日韩中文字幕精品| 欧美怡红院视频| 欧美情侣在线播放| 欧美日韩亚洲综合在线 | 日欧美一区二区| 爽好久久久欧美精品| 视频一区二区国产| 免费国产亚洲视频| 免费av网站大全久久| 精品中文字幕一区二区| 毛片不卡一区二区| 国产精品亚洲一区二区三区在线| 国产大陆a不卡| 成人免费视频免费观看| 播五月开心婷婷综合| 91丝袜呻吟高潮美腿白嫩在线观看| 一本色道a无线码一区v| 在线免费观看成人短视频| 欧美三级中文字幕在线观看| 91精品黄色片免费大全| 日韩精品一区二区三区四区视频| 2022国产精品视频| 国产精品水嫩水嫩| 亚洲日本成人在线观看| 亚洲va欧美va天堂v国产综合| 青青草国产精品亚洲专区无| 国内偷窥港台综合视频在线播放| 国内精品免费**视频| 成人精品视频一区二区三区| 色天使色偷偷av一区二区| 在线电影院国产精品| 久久久久久黄色| 一区二区三区在线影院| 日韩精品三区四区| 国产激情视频一区二区在线观看 | 色噜噜狠狠色综合中国| 91精品福利在线一区二区三区| 久久日韩精品一区二区五区| 综合自拍亚洲综合图不卡区| 日韩 欧美一区二区三区| 国产91在线|亚洲| 欧美三级一区二区| 久久久久久久精| 亚洲国产精品麻豆| 国产自产2019最新不卡| 欧美自拍丝袜亚洲| 欧美精品一区二区三区很污很色的 | 成人一区二区在线观看| 欧美视频在线一区|