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

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

?? hash.c

?? 卡內基梅隆大學(CMU)開發的移動機器人控制開發軟件包。可對多種機器人進行控制
?? C
字號:
 /********************************************************* * * This source code is part of the Carnegie Mellon Robot * Navigation Toolkit (CARMEN) * * CARMEN Copyright (c) 2002 Michael Montemerlo, Nicholas * Roy, Sebastian Thrun, Dirk Haehnel, Cyrill Stachniss, * and Jared Glover * * CARMEN is free software; you can redistribute it and/or  * modify it under the terms of the GNU General Public  * License as published by the Free Software Foundation;  * either version 2 of the License, or (at your option) * any later version. * * CARMEN is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE.  See the GNU General Public License for more  * details. * * You should have received a copy of the GNU General  * Public License along with CARMEN; if not, write to the * Free Software Foundation, Inc., 59 Temple Place,  * Suite 330, Boston, MA  02111-1307 USA * ********************************************************/#include <carmen/carmen.h>#include <assert.h>#include "hash.h"struct cache *hash_new(unsigned int size, unsigned int (*hash_func)(), 		       int (*compare_func)()){  struct cache *cache;  assert(size);  assert(!(size & (size - 1)));  cache = (struct cache *) calloc(1, sizeof(struct cache));  carmen_test_alloc(cache);  cache->node_table = (struct cache_node **)    calloc(size, sizeof(struct cache_node*));  carmen_test_alloc(cache->node_table);  cache->size = size;  cache->mask = size - 1;  cache->hash_func = hash_func;  cache->compare_func = compare_func;    return cache;}void hash_delete(struct cache *cache) {  struct cache_node *node;    while ((node = hash_next(cache, NULL)) != NULL) {    hash_remove(cache, node->key);  }  free(cache->node_table);    free(cache);  }void hash_add(struct cache **cachep, void *key, void *value) {  unsigned int indx;   struct cache_node *node;   struct cache_node *node1;   struct cache *new; #if 0  struct cache *crap1;  struct cache **crap2;#endif  indx = (*cachep)->hash_func(*cachep, key);  node = (struct cache_node *) calloc(1, sizeof(struct cache_node));  carmen_test_alloc(node);  assert(node);  node->key = key;  node->value = value;  node->next = (*cachep)->node_table[indx];  (*cachep)->node_table[indx] = node;  (*cachep)->used++;  if ((((*cachep)->size * 75) / 100) <= (*cachep)->used) {    node1 = NULL;    new = hash_new((*cachep)->size * 2, (*cachep)->hash_func, 		   (*cachep)->compare_func);    while ((node1 = hash_next(*cachep, node1)) != NULL) {      hash_add(&new, node1->key, node1->value);    }    hash_delete(*cachep);        *cachep = new;  }  }void hash_remove(struct cache *cache, void *key) {  unsigned int indx;  struct cache_node *node;  indx = cache->hash_func(cache, key);  node = cache->node_table[indx];    assert(node);  if (cache->compare_func(node->key, key)) {    cache->node_table[indx] = node->next;    free(node);  } else {    struct cache_node *prev = node;    char removed = 0;    do {      if (cache->compare_func(node->key, key)) {	prev->next = node->next;	removed = 1;	free(node);      } else {	prev = node;	node = node->next;      }    } while (!removed && (node != NULL));    assert(removed);  }  cache->used--;}struct cache_node *hash_next(struct cache *cache, struct cache_node *node) {  if (node == NULL) {    cache->last_bucket = 0;  }    if (node != NULL) {    if (node->next != NULL) {      return node->next;    } else {      cache->last_bucket++;          }  }    if (cache->last_bucket < cache->size) {    while (cache->last_bucket < cache->size) {      if (cache->node_table[cache->last_bucket] != NULL) {	return cache->node_table[cache->last_bucket];      } else {	cache->last_bucket++;      }    }    return 0;      } else    return 0;  }void *hash_value_for_key(struct cache *cache, void *key){  struct cache_node *node;   void *retval;  node = cache->node_table[cache->hash_func(cache, key)];  retval = NULL;  if (node != NULL) {    do {            if (cache->compare_func(node->key, key)) {	retval = node->value;      } else {	node = node->next;      }                } while ((retval == NULL) && (node));              }     return retval;    }void *hash_change_key_value(struct cache *cache, void *key, void *new_value){  struct cache_node *node;  void *retval;  node = cache->node_table[cache->hash_func(cache, key)];  retval = NULL;  if (node != NULL) {    do {      if (cache->compare_func(node->key, key)) {	retval = node->value = new_value;      } else 	node = node->next;    } while ((retval == NULL) && (node != NULL));      }    return retval;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品中文有码| 国产不卡免费视频| 中文字幕日韩av资源站| 欧美精品一区二区三区在线播放| 欧美老年两性高潮| 欧美精三区欧美精三区| 欧美性猛交xxxx乱大交退制版| 91免费看`日韩一区二区| av电影一区二区| 日本精品一区二区三区四区的功能| 91一区在线观看| 欧美亚洲一区三区| 欧美日韩亚洲另类| 日韩一级视频免费观看在线| 日韩丝袜情趣美女图片| 久久色中文字幕| 亚洲天堂免费在线观看视频| 亚洲另类春色校园小说| 亚洲丶国产丶欧美一区二区三区| 亚洲成人中文在线| 久久精品国产一区二区三 | 91免费国产在线| 欧美三级日韩在线| 欧美成人精品1314www| 久久久www成人免费毛片麻豆| 精品久久久久久久一区二区蜜臀| 久久综合九色综合欧美亚洲| 中文文精品字幕一区二区| 亚洲日本青草视频在线怡红院| 亚洲欧美日韩电影| 青青草国产精品97视觉盛宴 | 精品sm在线观看| 国产精品伦一区| 亚洲成va人在线观看| 精品一区二区在线观看| 成人国产精品免费网站| 日本道免费精品一区二区三区| 欧美日韩另类一区| 国产亚洲欧美在线| 亚洲国产日韩av| 精品亚洲porn| 色菇凉天天综合网| 久久免费电影网| 亚洲精品乱码久久久久久日本蜜臀| 午夜欧美在线一二页| 国产精品中文字幕日韩精品| 欧美三级午夜理伦三级中视频| 欧美成人video| 亚洲综合视频在线| 国产精品99久久久久久似苏梦涵| 欧美日韩精品欧美日韩精品| 亚洲国产精品激情在线观看| 日韩av不卡在线观看| www.亚洲色图| 久久综合狠狠综合| 日日夜夜精品免费视频| 91网址在线看| 欧美激情一区二区三区全黄| 麻豆成人在线观看| 777午夜精品免费视频| 亚洲欧洲日韩在线| 福利一区福利二区| 精品国产乱码久久久久久闺蜜| 亚洲一区二区综合| 91视频一区二区三区| 国产日韩欧美精品电影三级在线 | 欧美不卡一区二区| 午夜伦欧美伦电影理论片| 色8久久人人97超碰香蕉987| 国产精品视频一二| 成人精品免费网站| 国产亚洲欧美日韩在线一区| 国内精品在线播放| 精品日韩av一区二区| 久久不见久久见中文字幕免费| 欧美一区二区精品| 日韩国产高清在线| 欧美精品v国产精品v日韩精品| 亚洲一区二区影院| 欧洲另类一二三四区| 一区二区三区四区激情| 99精品欧美一区二区三区综合在线| 国产片一区二区| 国产91色综合久久免费分享| 国产亚洲精久久久久久| 国产风韵犹存在线视精品| 久久人人97超碰com| 国产精品影视天天线| 久久久五月婷婷| 成人午夜激情在线| 亚洲免费高清视频在线| 色av成人天堂桃色av| 亚洲超碰97人人做人人爱| 欧美日韩国产综合一区二区三区| 丝袜亚洲另类丝袜在线| 日韩一区二区三区视频在线观看| 狠狠色丁香久久婷婷综合丁香| 精品对白一区国产伦| 国产精品一区三区| 国产精品高潮呻吟| 欧美视频一区二区三区在线观看| 首页综合国产亚洲丝袜| 亚洲精品一线二线三线| 99久久99久久免费精品蜜臀| 婷婷国产v国产偷v亚洲高清| 久久尤物电影视频在线观看| 成人免费精品视频| 一区二区高清视频在线观看| 日韩无一区二区| 成人激情校园春色| 亚州成人在线电影| 国产性做久久久久久| 99re这里都是精品| 日本强好片久久久久久aaa| 国产亚洲精品aa| 欧美久久高跟鞋激| av高清久久久| 久久国产精品99久久人人澡| 中文字幕人成不卡一区| 精品三级在线看| 色婷婷久久一区二区三区麻豆| 日本午夜一区二区| 亚洲欧美一区二区三区久本道91| 欧美放荡的少妇| 99视频有精品| 国产一区二区美女诱惑| 亚洲综合色网站| 中文字幕在线不卡一区| 精品乱人伦小说| 欧美电影在哪看比较好| av一二三不卡影片| 国产精品99久| 久久精品国产99久久6| 亚洲国产中文字幕| 亚洲欧洲另类国产综合| 久久久久久97三级| 日韩网站在线看片你懂的| 欧美日韩午夜影院| 色88888久久久久久影院野外| 国产成人精品免费一区二区| 全部av―极品视觉盛宴亚洲| 亚洲成人在线免费| 亚洲最新在线观看| 亚洲美女一区二区三区| 日本一区二区三级电影在线观看| 日韩欧美一二区| 欧美一区二区三区日韩| 欧美日韩亚洲高清一区二区| 91福利精品第一导航| 91福利视频在线| 91久久线看在观草草青青| 99久久99久久久精品齐齐| 高潮精品一区videoshd| 成人免费视频免费观看| 丰满亚洲少妇av| 粉嫩高潮美女一区二区三区| 懂色av噜噜一区二区三区av| 国产精品乡下勾搭老头1| 国产二区国产一区在线观看| 国产91综合网| 91在线免费看| 91久久精品一区二区| 欧美日韩中文一区| 欧美亚洲动漫另类| 制服视频三区第一页精品| 欧美一区二区三区人| 欧美成人video| 国产嫩草影院久久久久| 国产精品视频你懂的| 亚洲欧美电影院| 性做久久久久久免费观看欧美| 秋霞av亚洲一区二区三| 久久99九九99精品| 国产精品一二三四区| 成人精品视频一区| 欧美日韩一区久久| 欧美xxxxx牲另类人与| 久久久久久**毛片大全| 亚洲精品成人在线| 日本不卡高清视频| 国产69精品久久久久777| 一本到高清视频免费精品| 欧美疯狂做受xxxx富婆| 久久精品亚洲精品国产欧美| 亚洲欧美激情在线| 久久精品99久久久| 99久久伊人精品| 91精品国产综合久久精品| 国产嫩草影院久久久久| 亚洲成人福利片| 国产.欧美.日韩| 777a∨成人精品桃花网| 国产精品欧美久久久久无广告| 亚洲国产视频网站| 国产成人av自拍| 3d成人动漫网站| 亚洲同性gay激情无套| 久久精品国产第一区二区三区| 一本大道av一区二区在线播放| 欧美一级日韩一级|