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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? symtab.c

?? 關(guān)聯(lián)模式的Apriori的vc實(shí)現(xiàn)
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
void* st_insert (SYMTAB *tab, const char *name, int type,                 unsigned size){                               /* --- insert a symbol */  unsigned h;                   /* hash value */  int i;                        /* index of hash bucket */  STE *ste;                     /* to traverse bucket list */  STE *nel;                     /* new symbol table element */  assert(tab && name            /* check the function arguments */      && ((size >= sizeof(int)) || (tab->vsz == INT_MAX)));  if ((tab->cnt /4 > tab->size) /* if buckets are rather full and */  &&  (tab->size   < tab->max)) /* table does not have maximal size, */    _reorg(tab);                /* reorganize the hash table */  h   = tab->hash(name, type);  /* compute the hash value and */  i   = h % tab->size;          /* the index of the hash bucket */  ste = tab->bvec[i];           /* get first element in bucket */  while (ste) {                 /* traverse the bucket list */    if ((type == ste->type)     /* if symbol found */    &&  (strcmp(name, ste->name) == 0))      break;                    /* abort the loop */    ste = ste->succ;            /* otherwise get the successor */  }                             /* element in the hash bucket */  if (ste                       /* if symbol found on current level */  && (ste->level == tab->level))    return EXISTS;              /* return 'symbol exists' */  #ifdef NIMAPFN                /* if name/identifier map management */  if (tab->cnt >= tab->vsz) {   /* if the identifier vector is full */    int vsz, **tmp;             /* (new) id vector and its size */    vsz = tab->vsz +((tab->vsz > BLKSIZE) ? tab->vsz >> 1 : BLKSIZE);    tmp = (int**)realloc(tab->ids, vsz *sizeof(int*));    if (!tmp) return NULL;      /* resize the identifier vector and */    tab->ids = tmp; tab->vsz = vsz;  /* set new vector and its size */  }                             /* (no resizing for symbol tables */  #endif                        /* since then tab->vsz = MAX_INT) */  nel = (STE*)malloc(sizeof(STE) +size +strlen(name) +1);  if (!nel) return NULL;        /* allocate memory for new symbol */  nel->name    = (char*)(nel+1) +size;         /* and organize it */  strcpy(nel->name, name);      /* note the symbol name, */  nel->type    = type;          /* the symbol type, and the */  nel->level   = tab->level;    /* current visibility level */  nel->succ    = tab->bvec[i];  /* insert new symbol at the head */  tab->bvec[i] = nel++;         /* of the bucket list */  #ifdef NIMAPFN                /* if name/identifier maps are */  if (tab->ids) {               /* supported and this is such a map */    tab->ids[tab->cnt] = (int*)nel;    *(int*)nel = tab->cnt;      /* store the new symbol */  }                             /* in the identifier vector */  #endif                        /* and set the symbol identifier */  tab->cnt++;                   /* increment the symbol counter */  return nel;                   /* return pointer to data field */}  /* st_insert() *//*--------------------------------------------------------------------*/int st_remove (SYMTAB *tab, const char *name, int type){                               /* --- remove a symbol/all symbols */  int i;                        /* index of hash bucket */  STE **p, *ste;                /* to traverse bucket list */  assert(tab);                  /* check for a valid symbol table */  /* --- remove all symbols --- */  if (!name) {                  /* if no symbol name given */    _delsym(tab);               /* delete all symbols */    tab->cnt = tab->level = 0;  /* reset visibility level */    return 0;                   /* and symbol counter */  }                             /* and return 'ok' */  /* --- remove one symbol --- */  i = tab->hash(name, type) % tab->size;  p = tab->bvec +i;             /* compute index of hash bucket */  while (*p) {                  /* and traverse bucket list */    if (((*p)->type == type)    /* if symbol found */    &&  (strcmp(name, (*p)->name) == 0))      break;                    /* abort loop */    p = &(*p)->succ;            /* otherwise get successor */  }                             /* in hash bucket */  ste = *p;                     /* if the symbol does not exist, */  if (!ste) return -1;          /* abort the function */  *p = ste->succ;               /* remove symbol from hash bucket */  if (tab->delfn) tab->delfn(ste +1);   /* delete user data */  free(ste);                    /* and symbol table element */  tab->cnt--;                   /* decrement symbol counter */  return 0;                     /* return 'ok' */}  /* st_remove() *//*--------------------------------------------------------------------*/void* st_lookup (SYMTAB *tab, const char *name, int type){                               /* --- look up a symbol */  int i;                        /* index of hash bucket */  STE *ste;                     /* to traverse bucket list */  assert(tab && name);          /* check arguments */  i   = tab->hash(name, type) % tab->size;  ste = tab->bvec[i];           /* compute index of hash bucket */  while (ste) {                 /* and traverse bucket list */    if ((ste->type == type)     /* if symbol found */    &&  (strcmp(name, ste->name) == 0))      return ste +1;            /* return pointer to assoc. data */    ste = ste->succ;            /* otherwise get successor */  }                             /* in hash bucket */  return NULL;                  /* return 'not found' */}  /* st_lookup() *//*--------------------------------------------------------------------*/void st_endblk (SYMTAB *tab){                               /* --- remove one visibility level */  int i;                        /* loop variable */  STE *ste, *tmp;               /* to traverse bucket lists */  assert(tab);                  /* check for a valid symbol table */  if (tab->level <= 0) return;  /* if on level 0, abort */  for (i = tab->size; --i >= 0; ) {  /* traverse bucket vector */    ste = tab->bvec[i];         /* get next bucket list */    while (ste                  /* and remove all symbols */    &&    (ste->level >= tab->level)) {  /* of higher level */      tmp = ste;                /* note symbol and */      ste = ste->succ;          /* get successor */      if (tab->delfn) tab->delfn(tmp +1);      free(tmp);                /* delete user data and */      tab->cnt--;               /* symbol table element */    }                           /* and decrement symbol counter */    tab->bvec[i] = ste;         /* set new start of bucket list */  }  tab->level--;                 /* go up one level */}  /* st_endblk() *//*--------------------------------------------------------------------*/#ifndef NDEBUGvoid st_stats (const SYMTAB *tab){                               /* --- compute and print statistics */  const STE *ste;               /* to traverse bucket lists */  int i;                        /* loop variable */  int used;                     /* number of used hash buckets */  int len;                      /* length of current bucket list */  int min, max;                 /* min. and max. bucket list length */  int cnts[10];                 /* counter for bucket list lengths */  assert(tab);                  /* check for a valid symbol table */  min = INT_MAX; max = used = 0;/* initialize variables */  for (i = 10; --i >= 0; ) cnts[i] = 0;  for (i = tab->size; --i >= 0; ) { /* traverse bucket vector */    len = 0;                    /* determine bucket list length */    for (ste = tab->bvec[i]; ste; ste = ste->succ) len++;    if (len > 0) used++;        /* count used hash buckets */    if (len < min) min = len;   /* determine minimal and */    if (len > max) max = len;   /* maximal list length */    cnts[(len >= 9) ? 9 : len]++;  }                             /* count list length */  printf("number of symbols     : %d\n", tab->cnt);  printf("number of hash buckets: %d\n", tab->size);  printf("used hash buckets     : %d\n", used);  printf("minimal list length   : %d\n", min);  printf("maximal list length   : %d\n", max);  printf("average list length   : %g\n", (double)tab->cnt/tab->size);  printf("ditto, of used buckets: %g\n", (double)tab->cnt/used);  printf("length distribution   :\n");  for (i = 0; i < 9; i++) printf("%3d ", i);  printf(" >8\n");  for (i = 0; i < 9; i++) printf("%3d ", cnts[i]);  printf("%3d\n", cnts[9]);}  /* st_stats() */#endif/*----------------------------------------------------------------------  Name/Identifier Map Functions----------------------------------------------------------------------*/#ifdef NIMAPFNNIMAP* nim_create (int init, int max, HASHFN hash, SYMFN delfn){                               /* --- create a name/identifier map */  NIMAP *nim;                   /* created name/identifier map */  nim = st_create(init, max, hash, delfn);  if (!nim) return NULL;        /* create a name/identifier map */  nim->vsz = 0;                 /* and clear the id. vector size */  return nim;                   /* return created name/id map */}  /* nim_create() *//*--------------------------------------------------------------------*/void nim_sort (NIMAP *nim, SYMCMPFN cmpfn, void *data,               int *map, int dir){                               /* --- sort name/identifier map */  int i;                        /* loop variable */  int **p;                      /* to traverse the value vector */  assert(nim && cmpfn);         /* check the function arguments */  v_sort(nim->ids, nim->cnt, cmpfn, data);  if (!map) {                   /* if no conversion map is requested */    for (p = nim->ids +(i = nim->cnt); --i >= 0; )      **--p = i; }              /* just set new identifiers */  else {                        /* if a conversion map is requested, */    p = nim->ids +(i = nim->cnt);      /* traverse the sorted vector */    if (dir < 0)                /* if backward map (i.e. new -> old) */      while (--i >= 0) { map[i] = **--p; **p = i; }    else                        /* if forward  map (i.e. old -> new) */      while (--i >= 0) { map[**--p] = i; **p = i; }  }                             /* (build conversion map) */}  /* nim_sort() *//*--------------------------------------------------------------------*/void nim_trunc (NIMAP *nim, int n){                               /* --- truncate name/identifier map */  int *id;                      /* to access the identifiers */  while (nim->cnt > n) {        /* while to remove mappings */    id = nim->ids[nim->cnt -1]; /* get the identifier object */    st_remove(nim, st_name(id), 0);  }                             /* remove the symbol table element */}  /* nim_trunc() */#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩精品视频一区| 欧美乱熟臀69xxxxxx| 久久精品这里都是精品| 国产资源精品在线观看| 久久奇米777| 成人国产在线观看| 亚洲欧美激情视频在线观看一区二区三区| 99re热这里只有精品视频| 亚洲免费观看视频| 欧美日韩亚洲国产综合| 美洲天堂一区二卡三卡四卡视频| 精品久久久久久无| 成人高清免费观看| 亚洲免费在线播放| 91精品婷婷国产综合久久| 久久99精品久久久久婷婷| 国产亚洲人成网站| 91浏览器打开| 三级成人在线视频| 国产人久久人人人人爽| 91麻豆文化传媒在线观看| 天堂va蜜桃一区二区三区漫画版| 日韩精品一区二| aaa亚洲精品| 婷婷六月综合亚洲| 国产欧美精品一区| 欧美亚洲一区三区| 国产一区二区在线视频| 亚洲精品国产视频| 亚洲精品在线免费观看视频| 99久久99精品久久久久久| 日韩黄色片在线观看| 亚洲国产精品国自产拍av| 欧美日韩国产系列| 成人av电影在线观看| 日本不卡高清视频| 1000部国产精品成人观看| 538在线一区二区精品国产| 粉嫩久久99精品久久久久久夜| 亚洲午夜精品17c| 久久综合九色综合欧美98| 欧美在线观看禁18| 国产.欧美.日韩| 视频一区二区三区中文字幕| 国产精品国产三级国产aⅴ无密码| 久久久久久久国产精品影院| 欧美主播一区二区三区| 国产一区二区三区在线观看免费| 亚洲一级片在线观看| 欧美国产一区二区在线观看| 夜夜精品浪潮av一区二区三区| 精品国产亚洲在线| 欧美精品丝袜久久久中文字幕| 99国产精品国产精品久久| 国产一区二区三区精品欧美日韩一区二区三区| 夜夜嗨av一区二区三区网页| 国产精品污污网站在线观看| 日韩欧美中文一区二区| 欧美亚洲动漫制服丝袜| www.欧美日韩国产在线| 国产精品香蕉一区二区三区| 久久成人麻豆午夜电影| 男女视频一区二区| 亚洲国产成人高清精品| 亚洲日本欧美天堂| 中文字幕一区二区三区不卡在线 | 国产亚洲综合在线| 91精品福利在线一区二区三区| 在线一区二区观看| 91麻豆自制传媒国产之光| 不卡视频在线看| av亚洲精华国产精华| 懂色av一区二区在线播放| 国产高清在线精品| 国产乱码精品一区二区三区忘忧草 | 欧美大度的电影原声| 欧美日韩在线不卡| 欧美日韩免费一区二区三区视频| 欧美性xxxxx极品少妇| 欧美日韩中文字幕一区二区| 欧美少妇xxx| 欧美日韩色一区| 5858s免费视频成人| 欧美一区二视频| 久久综合资源网| 国产欧美日韩另类视频免费观看| 亚洲国产成人在线| 日韩一区在线免费观看| 亚洲免费av观看| 亚洲精品国产无天堂网2021| 亚洲成av人片在线观看无码| 三级久久三级久久久| 国产一区二区三区高清播放| 国产高清不卡二三区| 97国产精品videossex| 欧美亚洲图片小说| 欧美一区三区二区| 国产亚洲精久久久久久| 国产精品福利av| 亚洲福中文字幕伊人影院| 日本一不卡视频| 欧美日韩午夜精品| 亚洲精品在线三区| 国产精品进线69影院| 亚洲一区二区精品视频| 日本aⅴ精品一区二区三区| 国产一区二区美女| 91美女在线看| 日韩欧美一区二区久久婷婷| 国产欧美一区二区精品久导航 | 精品国产一区二区三区久久久蜜月| 精品国产制服丝袜高跟| 亚洲人成在线播放网站岛国| 婷婷开心激情综合| 成人国产精品免费网站| 欧美美女直播网站| 日本一区二区三区高清不卡| 亚洲国产精品久久久久婷婷884| 看电视剧不卡顿的网站| 99久久免费视频.com| 91精品国产综合久久福利软件| 欧美激情一区三区| 奇米影视在线99精品| eeuss鲁片一区二区三区在线观看| 欧美日本在线观看| 国产精品久久免费看| 青草av.久久免费一区| 91视频www| 久久综合九色综合97婷婷女人 | 激情偷乱视频一区二区三区| 欧美综合久久久| 国产亚洲女人久久久久毛片| 五月婷婷综合在线| 91视频com| 国产拍欧美日韩视频二区| 午夜激情综合网| 99视频在线精品| 国产视频一区二区在线观看| 午夜视频一区二区三区| 99久久精品一区二区| xf在线a精品一区二区视频网站| 亚洲网友自拍偷拍| av一本久道久久综合久久鬼色| www日韩大片| 欧美a一区二区| 欧美日韩亚洲综合在线| 亚洲免费观看高清完整版在线| 国产一区二区0| 日韩精品一区二区三区在线观看 | 日本午夜一区二区| 91成人国产精品| 最新久久zyz资源站| 国产成人在线视频播放| 精品国产123| 久草在线在线精品观看| 欧美一级日韩免费不卡| 日韩av在线播放中文字幕| 欧美色中文字幕| 亚洲国产精品欧美一二99| 99久久国产综合精品色伊| 国产精品久久久久久亚洲毛片| 国产ts人妖一区二区| 日韩av网站在线观看| 5858s免费视频成人| 日本午夜精品视频在线观看| 这里只有精品视频在线观看| 婷婷亚洲久悠悠色悠在线播放 | 91免费视频网| 中文字幕一区日韩精品欧美| 成人av在线资源网站| 国产精品久久久久久久久图文区| 成人免费看片app下载| 国产欧美日韩视频在线观看| 成人午夜在线播放| 国产精品美女久久久久aⅴ| a在线欧美一区| 亚洲欧美日韩系列| 欧美三级午夜理伦三级中视频| 亚洲午夜三级在线| 欧美精品第一页| 久久精品国产色蜜蜜麻豆| 久久久精品免费网站| 成人黄色777网| 亚洲精品久久久蜜桃| 欧美裸体一区二区三区| 精品一区二区三区在线播放| 国产欧美日韩综合精品一区二区| 成人精品gif动图一区| 亚洲欧洲制服丝袜| 欧美日韩不卡一区| 九九精品视频在线看| 国产精品理论在线观看| 欧美视频三区在线播放| 久久精品999| 国产精品视频免费看| 欧美无乱码久久久免费午夜一区 | 久久国产成人午夜av影院| 国产农村妇女毛片精品久久麻豆 | 久久国产夜色精品鲁鲁99| 国产日产精品一区|