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

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

?? ptree.c

?? julius version 4.12.about sound recognition.
?? C
字號:
/** * @file   ptree.c *  * <JA> * @brief  パトリシア浮瑚騰を脫いた嘆漣浮瑚¨デ〖タ房が int の眷圭 * </JA> *  * <EN> * @brief  Patricia index tree for name lookup: data type = int * </EN> *  * @author Akinobu LEE * @date   Thu Feb 17 15:34:39 2005 * * $Revision: 1.4 $ *  *//* * Copyright (c) 1991-2007 Kawahara Lab., Kyoto University * Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology * Copyright (c) 2005-2007 Julius project team, Nagoya Institute of Technology * All rights reserved */#include <sent/stddefs.h>#include <sent/ptree.h>static unsigned char mbit[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};  /**  * String bit test function. *  * @param str [in] key string * @param bitplace [in] bit location to test *  * @return the content of tested bit in @a tmp_str, either 0 or 1. */inttestbit(char *str, int slen, int bitplace){  int maskptr;    if ((maskptr = bitplace >> 3) > slen) return 0;  return(str[maskptr] & mbit[bitplace & 7]);}/**  * Local bit test function for search. *  * @param str [in] key string * @param bitplace [in] bit place to test. * @param maxbitplace [in] maximum number of bitplace *  * @return the content of tested bit in @a tmp_str, either 0 or 1. */inttestbit_max(char *str, int bitplace, int maxbitplace){  if (bitplace >= maxbitplace) return 0;  return(str[bitplace >> 3] & mbit[bitplace & 7]);}/**  * Find in which bit the two strings differ, starting from the head. *  * @param str1 [in] string 1 * @param str2 [in] string 2 *  * @return the bit location in which the string differs. */intwhere_the_bit_differ(char *str1, char *str2){  int p = 0;  int bitloc;  int slen1, slen2;  /* step: char, bit */  while(str1[p] == str2[p]) p++;  bitloc = p * 8;  slen1 = strlen(str1);  slen2 = strlen(str2);  while(testbit(str1, slen1, bitloc) == testbit(str2, slen2, bitloc)) bitloc++;  return(bitloc);}/**  * Allocate a new node. *  *  * @return pointer to the new node. */static PATNODE *new_node(){  PATNODE *tmp;  tmp = (PATNODE *)mymalloc(sizeof(PATNODE));  tmp->left0 = NULL;  tmp->right1 = NULL;  return(tmp);}/**  * Make a patricia tree for given string arrays. * Recursively called by descending the scan bit. *  * @param words [in] list of word strings * @param data [in] integer value corresponding to each string in @a words * @param wordsnum [in] number of above * @param bitplace [in] current scan bit. *  * @return pointer to the root node index. */PATNODE *make_ptree(char **words, int *data, int wordsnum, int bitplace){  int i,j, tmp;  char *p;  int newnum;  PATNODE *ntmp;#if 0  printf("%d:", wordsnum);  for (i=0;i<wordsnum;i++) {    printf(" %s",words[i]);  }  printf("\n");  printf("test bit = %d\n", bitplace);#endif  if (wordsnum == 1) {    /* word identified: this is leaf node */    ntmp = new_node();    ntmp->value.data = data[0];    return(ntmp);  }  newnum = 0;  for (i=0;i<wordsnum;i++) {    if (testbit(words[i], strlen(words[i]), bitplace) != 0) {      newnum++;    }  }  if (newnum == 0 || newnum == wordsnum) {    /* all words has same bit, continue to descend */    return(make_ptree(words, data, wordsnum, bitplace + 1));  } else {    /* sort word pointers by tested bit */    j = wordsnum-1;    for (i=0; i<newnum; i++) {      if (testbit(words[i], strlen(words[i]), bitplace) == 0) {	for (; j>=newnum; j--) {	  if (testbit(words[j], strlen(words[j]), bitplace) != 0) {	    p = words[i]; words[i] = words[j]; words[j] = p;	    tmp = data[i]; data[i] = data[j]; data[j] = tmp;	    break;	  }	}      }    }    /* create node and descend for each node */    ntmp = new_node();    ntmp->value.thres_bit = bitplace;    ntmp->right1 = make_ptree(words, data, newnum, bitplace+1);    ntmp->left0  = make_ptree(&(words[newnum]), &(data[newnum]), wordsnum-newnum, bitplace+1);    return(ntmp);  }}/**  * Output a tree structure in text for debug, traversing pre-order * * @param node [in] root index node * @param level [in] current tree depth */voiddisp_ptree(PATNODE *node, int level){  int i;  for (i=0;i<level;i++) {    printf("-");  }  if (node->left0 == NULL && node->right1 == NULL) {    printf("LEAF:%d\n", node->value.data);  } else {    printf("%d\n", node->value.thres_bit);    if (node->left0 != NULL) {      disp_ptree(node->left0, level+1);    }    if (node->right1 != NULL) {      disp_ptree(node->right1, level+1);    }  }}/**  * Recursive function to search the data in the tree *  * @param node [in] current node. * @param str [in] key string * @param maxbitplace [in] maximum number of bitplace *  * @return the found integer value. */static intptree_search_data_r(PATNODE *node, char *str, int maxbitplace){  if (node->left0 == NULL && node->right1 == NULL) {    return(node->value.data);  } else {    if (testbit_max(str, node->value.thres_bit, maxbitplace) != 0) {      return(ptree_search_data_r(node->right1, str, maxbitplace));    } else {      return(ptree_search_data_r(node->left0, str, maxbitplace));    }  }}/**  * Search for the data whose key string matches the given string. *  * @param str [in] search key string * @param node [in] root node of index tree *  * @return the exactly found integer value, or the nearest one. */intptree_search_data(char *str, PATNODE *node){  if (node == NULL) {    //("Error: ptree_search_data: no node, search for \"%s\" failed\n", str);    return -1;  }  return(ptree_search_data_r(node, str, strlen(str) * 8 + 8));}/**  * Recursive function to replace the data in the tree *  * @param node [in] current node. * @param str [in] key string * @param val [in] new value * @param maxbitplace [in] maximum number of bitplace *  * @return the found integer value. */static intptree_replace_data_r(PATNODE *node, char *str, int val, int maxbitplace){  if (node->left0 == NULL && node->right1 == NULL) {    node->value.data = val;    return(node->value.data);  } else {    if (testbit_max(str, node->value.thres_bit, maxbitplace) != 0) {      return(ptree_replace_data_r(node->right1, str, val, maxbitplace));    } else {      return(ptree_replace_data_r(node->left0, str, val, maxbitplace));    }  }}/**  * Search for the data whose key string matches the given string, and * replace its value. *  * @param str [in] search key string * @param val [in] value * @param node [in] root node of index tree *  * @return the exactly found integer value, or the nearest one. */intptree_replace_data(char *str, int val, PATNODE *node){  if (node == NULL) {    //("Error: ptree_search_data: no node, search for \"%s\" failed\n", str);    return -1;  }  return(ptree_replace_data_r(node, str, val, strlen(str) * 8 + 8));}/*******************************************************************//* add 1 node to given ptree *//**  * Make a root node of a index tree. *  * @param data [in] the first data *  * @return the newly allocated root node. */PATNODE *ptree_make_root_node(int data){  PATNODE *nnew;  /* make new leaf node for newstr */  nnew = new_node();  nnew->value.data = data;  return(nnew);}/**  * Insert a new node to the existing index tree. *  * @param str [in] new key string * @param bitloc [in] bit branch to which this node will be added * @param data [in] new data integer value * @param parentlink [i/o] the parent node to which this node will be added */static voidptree_add_entry_at(char *str, int slen, int bitloc, int data, PATNODE **parentlink){  PATNODE *node;  node = *parentlink;  if (node->value.thres_bit > bitloc ||      (node->left0 == NULL && node->right1 == NULL)) {    PATNODE *newleaf, *newbranch;    /* insert between [parent] and [node] */    newleaf = new_node();    newleaf->value.data = data;    newbranch = new_node();    newbranch->value.thres_bit = bitloc;    *parentlink = newbranch;    if (testbit(str, slen, bitloc) ==0) {      newbranch->left0  = newleaf;      newbranch->right1 = node;    } else {      newbranch->left0  = node;      newbranch->right1 = newleaf;    }    return;  } else {    if (testbit(str, slen, node->value.thres_bit) != 0) {      ptree_add_entry_at(str, slen, bitloc, data, &(node->right1));    } else {      ptree_add_entry_at(str, slen, bitloc, data, &(node->left0));    }  }}/**  * Insert a new node to the index tree. *  * @param str [in] new key string * @param data [in] new data integer value * @param matchstr [in] the most matching data already exist in the index tree, * as obtained by aptree_search_data() * @param rootnode [i/o] pointer to root index node */voidptree_add_entry(char *str, int data, char *matchstr, PATNODE **rootnode){  int bitloc;  bitloc = where_the_bit_differ(str, matchstr);  if (*rootnode == NULL) {    *rootnode = ptree_make_root_node(data);  } else {    ptree_add_entry_at(str, strlen(str), bitloc, data, rootnode);  }}/**  * Free all the sub nodes from specified node. *  * @param node [in] current node. */voidfree_ptree(PATNODE *node){  if (node == NULL) return;  if (node->left0 != NULL) free_ptree(node->left0);  if (node->right1 != NULL) free_ptree(node->right1);  free(node);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费观看在线综合色| gogo大胆日本视频一区| 国产精品一区二区无线| av电影在线观看不卡| 69堂国产成人免费视频| 国产欧美精品在线观看| 天天影视涩香欲综合网| 成人免费毛片嘿嘿连载视频| 欧美日韩成人综合天天影院| 中文字幕第一区第二区| 日韩福利视频网| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美日韩五月天| 久久精品亚洲乱码伦伦中文 | 中文字幕av不卡| 日本视频一区二区| 欧美天堂亚洲电影院在线播放| 国产三级三级三级精品8ⅰ区| 日本人妖一区二区| 欧美日韩亚洲综合| 亚洲日本成人在线观看| 国产91在线看| 久久午夜羞羞影院免费观看| 亚洲第一会所有码转帖| 99re视频精品| 国产精品美女久久久久aⅴ| 国产精品综合一区二区| 日韩精品中文字幕一区| 日本少妇一区二区| 日韩亚洲欧美一区| 麻豆精品精品国产自在97香蕉| 制服丝袜日韩国产| 婷婷久久综合九色综合绿巨人| 在线视频国产一区| 香蕉加勒比综合久久| 欧美日韩成人一区二区| 婷婷激情综合网| 91精品在线免费观看| 青青青爽久久午夜综合久久午夜| 欧美精品一卡二卡| 日本中文一区二区三区| 日韩欧美国产麻豆| 激情深爱一区二区| 久久午夜国产精品| 成人午夜碰碰视频| 亚洲男帅同性gay1069| 91福利视频久久久久| 亚洲一区在线看| 欧美精选一区二区| 久久99精品一区二区三区三区| 欧美成人性福生活免费看| 韩国av一区二区三区在线观看| 久久综合九色综合欧美亚洲| 懂色av一区二区在线播放| 国产精品久久久久一区| 色偷偷88欧美精品久久久| 亚洲午夜在线电影| 精品国内片67194| 国产99久久久国产精品免费看| 亚洲蜜桃精久久久久久久| 欧美人体做爰大胆视频| 黄色资源网久久资源365| 亚洲国产高清aⅴ视频| 欧美性色综合网| 久久91精品国产91久久小草| 国产精品区一区二区三区| 欧洲精品在线观看| 精品无码三级在线观看视频| 中文字幕日韩欧美一区二区三区| 欧美三级三级三级| 韩国一区二区三区| 一区二区视频在线| 欧美mv日韩mv国产网站app| 国产乱人伦偷精品视频不卡 | 精品成人一区二区三区| 成人一区二区三区中文字幕| 亚洲国产精品影院| 久久综合九色综合欧美98| 色综合久久综合网| 国产在线播放一区三区四| 一区二区三区在线免费观看| 欧美精品一区二区高清在线观看| 91视频观看免费| 九一久久久久久| 亚洲一区二区三区在线播放| 久久蜜桃一区二区| 欧美日韩国产一二三| 成人免费av在线| 免费成人美女在线观看.| ...中文天堂在线一区| 精品国产乱码久久久久久1区2区| 欧美吞精做爰啪啪高潮| 成人av免费观看| 国产在线视频精品一区| 日本伊人色综合网| 洋洋av久久久久久久一区| 国产免费成人在线视频| 欧美大片在线观看| 欧美日韩在线一区二区| 91亚洲永久精品| 东方aⅴ免费观看久久av| 免费观看日韩电影| 日韩中文字幕亚洲一区二区va在线| 中文字幕在线视频一区| 久久免费国产精品| 精品国产一区a| 欧美一级久久久| 欧美丰满嫩嫩电影| 欧美性猛片aaaaaaa做受| 91麻豆国产香蕉久久精品| 粉嫩一区二区三区在线看| 国产一区二区三区| 国内精品免费在线观看| 久久电影网站中文字幕| 久久国产精品第一页| 久久成人久久爱| 免费看欧美女人艹b| 男女视频一区二区| 六月丁香综合在线视频| 精品一区二区综合| 美女国产一区二区| 久久99久久久久久久久久久| 精品一区二区三区在线播放| 久久精品国产77777蜜臀| 青青草国产精品亚洲专区无| 美脚の诱脚舐め脚责91 | 91精品国产色综合久久| 7777精品伊人久久久大香线蕉完整版| 欧美喷潮久久久xxxxx| 欧美日韩国产经典色站一区二区三区 | 一本到高清视频免费精品| 日本韩国一区二区三区视频| 在线免费一区三区| 精品视频色一区| 欧美一区二区三区视频在线| 日韩欧美高清在线| 国产日韩影视精品| 日韩伦理电影网| 亚洲电影你懂得| 精品一区二区影视| 成人爽a毛片一区二区免费| 91网站黄www| 欧美年轻男男videosbes| 欧美一区二区三区日韩视频| 国产亚洲一区二区在线观看| 中文字幕久久午夜不卡| 亚洲女人****多毛耸耸8| 日本亚洲电影天堂| 国产黄色91视频| 色婷婷av一区| 欧美一级午夜免费电影| 欧美精品一区二区三区四区| 国产精品国产三级国产普通话三级| 亚洲色图视频网| 免费看日韩a级影片| zzijzzij亚洲日本少妇熟睡| 欧美另类videos死尸| 国产偷国产偷亚洲高清人白洁| 亚洲天堂a在线| 日本在线观看不卡视频| 国产99精品国产| 欧美剧在线免费观看网站| 久久五月婷婷丁香社区| 亚洲成在人线免费| 国产毛片精品国产一区二区三区| 色综合视频在线观看| 日韩精品一区二区三区四区视频 | 久久综合久久综合久久综合| 一区二区三区精密机械公司| 国产一区二区在线观看免费| 色综合天天综合网国产成人综合天| 这里是久久伊人| 自拍偷拍亚洲欧美日韩| 国产中文字幕一区| 欧美精品日韩一本| 综合久久久久综合| 国产曰批免费观看久久久| 在线观看区一区二| 亚洲国产成人一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 一本高清dvd不卡在线观看| 日本一区二区在线不卡| 蜜臂av日日欢夜夜爽一区| 在线精品视频小说1| 国产精品成人免费精品自在线观看| 久久国产精品色| 欧美另类久久久品| 亚洲一二三级电影| 色综合久久久久综合体桃花网| 久久女同精品一区二区| 蜜臀av性久久久久蜜臀aⅴ| 91久久人澡人人添人人爽欧美| 久久精品男人天堂av| 精品亚洲免费视频| 日韩视频在线你懂得| 天堂久久一区二区三区| 欧洲日韩一区二区三区| 夜色激情一区二区| 欧美午夜影院一区| 一区二区三区**美女毛片|