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

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

?? symtab.c

?? 關聯模式的Apriori的vc實現
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*----------------------------------------------------------------------  File    : symtab.c  Contents: symbol table management  Author  : Christian Borgelt  History : 22.10.1995 file created            30.10.1995 functions made independent of symbol data            26.11.1995 symbol types and visibility levels added            04.01.1996 st_clear added            27.02.1996 st_insert modified            28.06.1996 dynamic bucket vector enlargement added            04.07.1996 bug in bucket reorganization removed            01.04.1997 functions st_clear and st_remove combined            29.07.1997 minor improvements            05.08.1997 minor improvements            16.11.1997 some comments improved            06.02.1998 default table sizes changed            31.05.1998 list of all symbols removed            20.06.1998 deletion function moved to st_create            14.07.1998 minor improvements            01.09.1998 bug in function _sort removed, assertions added            25.09.1998 hash function improved            28.09.1998 types ULONG and CCHAR removed, st_stats added            04.02.1999 long int changed to int            10.11.1999 name/identifier map management added            15.08.2003 renamed new to nel in st_insert (C++ compat.)            15.12.2004 function nim_trunc added            28.12.2004 bug in function nim_trunc fixed----------------------------------------------------------------------*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <limits.h>#include <assert.h>#include "symtab.h"#ifdef NIMAPFN#include "vecops.h"#endif#ifdef STORAGE#include "storage.h"#endif/*----------------------------------------------------------------------  Preprocessor Definitions----------------------------------------------------------------------*/#define DFLT_INIT     1023      /* default initial hash table size */#if (INT_MAX > 32767)#define DFLT_MAX   1048575      /* default maximal hash table size */#else#define DFLT_MAX     16383      /* default maximal hash table size */#endif#define BLKSIZE        256      /* block size for identifier vector *//*----------------------------------------------------------------------  Default Hash Function----------------------------------------------------------------------*/static unsigned _hdflt (const char *name, int type){                               /* --- default hash function */  register unsigned h = type;   /* hash value */  while (*name) h ^= (h << 3) ^ (unsigned)(*name++);  return h;                     /* compute hash value */}  /* _hdflt() *//*----------------------------------------------------------------------  Auxiliary Functions----------------------------------------------------------------------*/static void _delsym (SYMTAB *tab){                               /* --- delete all symbols */  int i;                        /* loop variable */  STE *ste, *tmp;               /* to traverse the symbol list */  for (i = tab->size; --i >= 0; ) {  /* traverse bucket vector */    ste = tab->bvec[i];         /* get the next bucket list, */    tab->bvec[i] = NULL;        /* clear the bucket vector entry, */    while (ste) {               /* and traverse the bucket list */      tmp = ste;                /* note the symbol to delete */      ste = ste->succ;          /* and get the next symbol */      if (tab->delfn) tab->delfn(tmp +1);      free(tmp);                /* if a deletion function is given, */    }                           /* call it and then deallocate */  }                             /* the symbol table element */}  /* _delsym() *//*--------------------------------------------------------------------*/static STE** _merge (STE *in[], int cnt[], STE **out){                               /* --- merge two lists into one */  int k;                        /* index of input list */  do {                          /* compare and merge loop */    k = (in[0]->level > in[1]->level) ? 0 : 1;    *out  = in[k];              /* append the element on the higher */    out   = &(*out)->succ;      /* level to the output list and */    in[k] = *out;               /* remove it from the input list */  } while (--cnt[k] > 0);       /* while both lists are not empty */  *out = in[k ^= 1];            /* append remaining elements */  while (--cnt[k] >= 0)         /* while not at the end of the list */    out = &(*out)->succ;        /* go to the successor element */  in[k] = *out;                 /* set new start of the input list */  *out  = NULL;                 /* terminate the output list and */  return out;                   /* return new end of the output list */}  /* _merge() *//*--------------------------------------------------------------------*/static STE* _sort (STE *list){                               /* --- sort a hash bucket list */  STE *ste;                     /* to traverse the list, buffer */  STE *in[2], *out[2];          /* input and output lists */  STE **end[2];                 /* ends of output lists */  int cnt[2];                   /* number of elements to merge */  int run;                      /* run length in input lists */  int rem;                      /* elements in remainder collection */  int oid;                      /* index of output list */  if (!list) return list;       /* empty lists need not to be sorted */  oid = 0; out[0] = list;       /* traverse list elements */  for (ste = list->succ; ste; ste = ste->succ)    if ((oid ^= 1) == 0) list = list->succ;  out[1] = list->succ;          /* split list into two equal parts */  list   = list->succ = NULL;   /* initialize remainder collection */  run    = 1; rem = 0;          /* and run length */  while (out[1]) {              /* while there are two lists */    in [0] = out[0]; in [1] = out[1];  /* move output list to input */    end[0] = out;    end[1] = out+1;   /* reinitialize end pointers */    out[1] = NULL;   oid    = 0;       /* start with 1st output list */    do {                        /* merge loop */      cnt[0]   = cnt[1] = run;  /* merge run elements from the */      end[oid] = _merge(in, cnt, end[oid]);     /* input lists */      oid ^= 1;                 /* toggle index of output list */    } while (in[1]);            /* while both lists are not empty */    if (in[0]) {                /* if there is one input list left */      if (!list)                /* if there is no rem. collection, */        list = in[0];           /* just note the rem. input list */      else {                    /* if there is a rem. collection, */        cnt[0] = run; cnt[1] = rem; in[1] = list;        _merge(in, cnt, &list); /* merge it and the input list to */      }                         /* get the new renmainder collection */      rem += run;               /* there are now run more elements */    }                           /* in the remainder collection */    run <<= 1;                  /* double run length */  }  /* while (out[1]) .. */  if (rem > 0) {                /* if there is a rem. collection */    in[0] = out[0]; cnt[0] = run;    in[1] = list;   cnt[1] = rem;    _merge(in, cnt, out);       /* merge it to the output list */  }                             /* and store the result in out[0] */  return out[0];                /* return the sorted list */}  /* _sort() *//*--------------------------------------------------------------------*/static void _reorg (SYMTAB *tab){                               /* --- reorganize a hash table */  int i;                        /* loop variable */  int size;                     /* new bucket vector size */  STE **p;                      /* new bucket vector, buffer */  STE *ste;                     /* to traverse symbol table elements */  STE *list = NULL;             /* list of all symbols */  size = (tab->size << 1) +1;   /* calculate new vector size */  if (size > tab->max)          /* if new size exceeds maximum, */    size = tab->max;            /* set the maximal size */  for (p = &list, i = tab->size; --i >= 0; ) {    *p = tab->bvec[i];          /* traverse the bucket vector and */    while (*p) p = &(*p)->succ; /* link all bucket lists together */  }                             /* (collect symbols) */  p = (STE**)realloc(tab->bvec, size *sizeof(STE*));  if (!p) return;               /* enlarge bucket vector */  tab->bvec = p;                /* set new bucket vector */  tab->size = size;             /* and its size */  for (p += i = size; --i >= 0; )    *--p = NULL;                /* clear the hash buckets */  while (list) {                /* traverse list of all symbols */    ste = list; list = list->succ;           /* get next symbol */    i   = tab->hash(ste->name, ste->type) %size;    ste->succ = tab->bvec[i];   /* compute the hash bucket index */    tab->bvec[i] = ste;         /* and insert the symbol at */  }                             /* the head of the bucket list */  for (i = size; --i >= 0; )    /* sort bucket lists according to */    tab->bvec[i] = _sort(tab->bvec[i]);   /* the visibility level */}  /* _reorg() *//*----------------------------------------------------------------------  Symbol Table Functions----------------------------------------------------------------------*/SYMTAB* st_create (int init, int max, HASHFN hash, SYMFN delfn){                               /* --- create a symbol table */  SYMTAB *tab;                  /* created symbol table */  if (init <= 0) init = DFLT_INIT;  /* check and adapt initial */  if (max  <= 0) max  = DFLT_MAX;   /* and maximal vector size */  tab = (SYMTAB*)malloc(sizeof(SYMTAB));  if (!tab) return NULL;        /* allocate symbol table body */  tab->bvec = (STE**)calloc(init, sizeof(STE*));  if (!tab->bvec) { free(tab); return NULL; }  tab->level = tab->cnt = 0;    /* allocate bucket vector */  tab->size  = init;            /* and initialize fields */  tab->max   = max;             /* of symbol table body */  tab->hash  = (hash) ? hash : _hdflt;  tab->delfn = delfn;  tab->vsz   = INT_MAX;  tab->ids   = NULL;  return tab;                   /* return created symbol table */}  /* st_create() *//*--------------------------------------------------------------------*/void st_delete (SYMTAB *tab){                               /* --- delete a symbol table */  assert(tab && tab->bvec);     /* check argument */  _delsym(tab);                 /* delete all symbols, */  free(tab->bvec);              /* the bucket vector, */  if (tab->ids) free(tab->ids); /* the identifier vector, */  free(tab);                    /* and the symbol table body */}  /* st_delete() *//*--------------------------------------------------------------------*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲高清免费观看高清完整版在线观看| 国产一区二区在线观看视频| 久久九九久久九九| 91精品国产综合久久精品图片 | 欧美主播一区二区三区| 国产盗摄一区二区| 精品制服美女久久| 国产麻豆精品theporn| 久久se这里有精品| 经典三级视频一区| 国产成人精品免费在线| 成人小视频免费在线观看| 国产成人精品亚洲日本在线桃色| 国产成人午夜精品影院观看视频| 国产一区二区三区四区五区美女| 韩国中文字幕2020精品| 国产一区二区按摩在线观看| 国产成人av自拍| 粉嫩一区二区三区性色av| 不卡一卡二卡三乱码免费网站| 成人av网址在线| 91久久线看在观草草青青| 6080日韩午夜伦伦午夜伦| 久久嫩草精品久久久久| 亚洲免费观看高清完整版在线观看熊| 日韩精品一区二区三区在线| 色婷婷国产精品综合在线观看| 亚洲国产精品久久人人爱| 日韩经典一区二区| 成人性色生活片| 7777女厕盗摄久久久| 国产欧美精品一区二区色综合| 亚洲精品第1页| 日韩一区二区免费电影| 精品久久久久久久久久久院品网| 久久精品人人爽人人爽| 亚洲成人你懂的| 久久99久久久久| 99久久婷婷国产综合精品| 91官网在线观看| 国产三级一区二区三区| 亚洲第一久久影院| 成人性色生活片免费看爆迷你毛片| 欧美日韩一区二区在线观看视频| 国产午夜亚洲精品羞羞网站| 亚洲国产精品久久久久婷婷884| 国产乱子伦视频一区二区三区 | 亚洲国产成人av好男人在线观看| 精品一区二区影视| 欧美日韩一区成人| 国产精品福利一区| 美美哒免费高清在线观看视频一区二区 | 亚洲午夜免费福利视频| 国产成人精品亚洲日本在线桃色 | 国产精品一区在线观看乱码| 欧美精品黑人性xxxx| 亚洲欧洲三级电影| 国产精品影音先锋| 欧美日韩一区二区三区视频| 亚洲欧洲另类国产综合| 韩国成人在线视频| 欧美一级片在线| 亚洲成人综合视频| 日本精品裸体写真集在线观看| 国产欧美日韩亚州综合| 久久99日本精品| 日韩三级精品电影久久久| 亚洲一区二区视频在线观看| 99re这里只有精品视频首页| 中文字幕制服丝袜成人av| 国产suv精品一区二区三区| 日韩精品一区二区三区四区| 日韩av电影免费观看高清完整版| 欧美三级日韩在线| 性感美女久久精品| 欧美日韩精品综合在线| 亚洲午夜在线视频| 欧美裸体一区二区三区| 五月婷婷另类国产| 日韩一区二区三| 国产传媒一区在线| 国产精品人妖ts系列视频| 成人午夜激情影院| 亚洲欧美电影一区二区| 91国在线观看| 视频在线在亚洲| 精品精品国产高清a毛片牛牛| 黄色日韩三级电影| 中文字幕欧美激情| 色婷婷精品大视频在线蜜桃视频| 亚洲黄色av一区| 欧美日韩一区成人| 久久99精品国产麻豆婷婷| 国产午夜亚洲精品午夜鲁丝片| 成人一级黄色片| 成人高清视频在线观看| 色综合久久中文字幕| 无吗不卡中文字幕| 26uuu欧美| 色婷婷狠狠综合| 麻豆精品视频在线| 欧美国产成人在线| 欧美在线色视频| 激情图片小说一区| 日韩久久一区二区| 欧美一区二区三区播放老司机| 国产成人在线影院| 亚洲一区二区三区在线看| 日韩欧美成人激情| 色综合久久中文综合久久牛| 男女男精品视频网| 亚洲免费毛片网站| 人人精品人人爱| 亚洲少妇中出一区| 欧美成人一区二区| 色噜噜狠狠成人中文综合| 久久99国产精品久久99果冻传媒| 国产农村妇女精品| 在线播放日韩导航| 91亚洲精品一区二区乱码| 美女任你摸久久 | 亚洲18色成人| 国产精品伦理一区二区| 91精品国产综合久久精品图片| 大美女一区二区三区| 日韩高清一区二区| 亚洲视频网在线直播| 日韩女同互慰一区二区| 91国模大尺度私拍在线视频| 国产成人av电影在线观看| 日本成人在线电影网| 一区二区三区不卡在线观看 | 欧美一区国产二区| 日本丶国产丶欧美色综合| 大胆欧美人体老妇| 久久国产麻豆精品| 日本在线不卡视频一二三区| 亚洲裸体在线观看| 国产精品久久三区| 国产欧美日韩卡一| 久久久综合精品| 日韩精品一区二区三区在线| 在线播放欧美女士性生活| 欧美理论在线播放| 欧美日韩一区二区三区不卡| 色婷婷亚洲一区二区三区| 9l国产精品久久久久麻豆| 国产成人精品免费看| 国产91高潮流白浆在线麻豆| 国产乱子伦一区二区三区国色天香 | 中文字幕一区二区5566日韩| 欧美极品xxx| 国产精品天天看| 国产精品二区一区二区aⅴ污介绍| 久久久精品国产免费观看同学| 日韩精品中文字幕一区二区三区| 欧美精品丝袜久久久中文字幕| 欧美人与z0zoxxxx视频| 欧美日韩电影在线播放| 7777精品伊人久久久大香线蕉完整版 | 亚洲一区二区美女| 亚洲一二三区在线观看| 国产91精品一区二区麻豆亚洲| 国产精品久线观看视频| 1024成人网| 亚洲影院免费观看| 日本欧美在线看| 激情小说亚洲一区| 床上的激情91.| 国产欧美日韩精品在线| 不卡的电视剧免费网站有什么| 91免费在线看| 在线播放中文一区| 国产午夜精品美女毛片视频| 国产精品国产精品国产专区不蜜| 亚洲免费高清视频在线| 日韩中文字幕av电影| 国产一区在线观看视频| 91一区一区三区| 91精品国产色综合久久久蜜香臀| xf在线a精品一区二区视频网站| 亚洲国产成人午夜在线一区| 亚洲电影中文字幕在线观看| 激情久久久久久久久久久久久久久久| 成人自拍视频在线观看| 欧美视频一二三区| 国产午夜精品在线观看| 亚洲国产wwwccc36天堂| 国产大片一区二区| 91精品欧美一区二区三区综合在 | 成人av片在线观看| 欧美精品丝袜中出| 日韩美女啊v在线免费观看| 日韩成人一级片| 99re这里只有精品首页| 久久午夜免费电影| 亚洲成人av免费| 91在线精品一区二区| 精品福利在线导航| 亚洲成va人在线观看|