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

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

?? hash.c

?? FinC is Fava in C! A C-like syntax language. It s designed to apply to embededd system.
?? C
字號:
#include <hash.h>#include <stdio.h>#include <stdlib.h>#define HASH_TABLE_MIN_SIZE 11#define HASH_TABLE_MAX_SIZE 13845163typedef struct _HashNode HashNode;struct _HashNode{	void* key;	void* value;	HashNode *next;};struct _HashTable{	Object parent;	int size;	int nnodes;	HashNode **nodes;	HashFunc hash_func;	EqualFunc key_equal_func;};static const unsigned int primes[] =    {        11,        19,        37,        73,        109,        163,        251,        367,        557,        823,        1237,        1861,        2777,        4177,        6247,        9371,        14057,        21089,        31627,        47431,        71143,        106721,        160073,        240101,        360163,        540217,        810343,        1215497,        1823231,        2734867,        4102283,        6153409,        9230113,        13845163,    };static const unsigned int nprimes = sizeof (primes) / sizeof (primes[0]);static void hash_table_resize (HashTable *hash_table);static HashNode** hash_table_find_node (HashTable *hash_table, void* key);static HashNode* hash_node_new (void* key, void* value);static void hash_node_destroy (HashNode *hash_node);static void hash_nodes_destroy (HashNode *hash_node);static unsigned int primes_closest (unsigned int num);static void hash_table_needresize(HashTable *hash_table);HashTable* hash_table_new (HashFunc hash_func, EqualFunc key_equal_func){	HashTable *hash_table;	unsigned int i;	hash_table = mem_new ( sizeof(HashTable) );	object_init_object (OBJECT (hash_table), hash_table_destroy);	hash_table->size               = HASH_TABLE_MIN_SIZE;	hash_table->nnodes             = 0;	hash_table->hash_func          = hash_func ? hash_func : direct_hash;	hash_table->key_equal_func     = key_equal_func;	hash_table->nodes              = mem_new ( sizeof(HashNode)*hash_table->size);	for (i = 0; i < hash_table->size; i++)		hash_table->nodes[i] = NULL;	return hash_table;}void hash_table_destroy (Object *hash_table){	unsigned int i;	HashTable* real_table = (HashTable*)hash_table;	if ( real_table == NULL )return;	for (i = 0; i < real_table->size; i++)		hash_nodes_destroy (real_table->nodes[i]);	mem_destroy (real_table->nodes);	mem_destroy (real_table);}static HashNode** hash_table_find_node (HashTable *hash_table, void* key){	HashNode **node;	node = &hash_table->nodes [(* hash_table->hash_func) (key) % hash_table->size];	if (hash_table->key_equal_func)		while (*node && !(*hash_table->key_equal_func) ((*node)->key, key))			node = &(*node)->next;	else		while (*node && (*node)->key != key)			node = &(*node)->next;	return node;}ADT hash_table_find (HashTable* hash_table, ADT key){	HashNode *node;	if ( hash_table == NULL || key == NULL) return NULL;	node = *hash_table_find_node (hash_table, key);	if ( node ) return addref(ADT, node->value);	else return NULL;}void hash_table_insert (HashTable *hash_table, ADT key, ADT value){	HashNode **node;	if ( hash_table == NULL )return;	node = hash_table_find_node (hash_table, key);	if (*node)	{		unref((*node)->value);		(*node)->value = addref(void*, value);	}	else	{		*node = hash_node_new (key, value);		hash_table->nnodes++;		hash_table_needresize (hash_table);	}}Bool hash_table_remove (HashTable *hash_table, ADT  key){	HashNode **node, *dest;	if ( hash_table ==NULL ) return FALSE;	node = hash_table_find_node (hash_table, key);	if (*node)	{		dest = *node;		(*node) = dest->next;		hash_node_destroy (dest);		hash_table->nnodes--;		hash_table_needresize (hash_table);		return TRUE;	}	return FALSE;}void hash_table_foreach(HashTable *hash_table, UserFunc user_func, ADT data){	HashNode *node;	int i;	if ( hash_table == NULL || user_func == NULL )return;	for (i = 0; i < hash_table->size; i++)		for (node = hash_table->nodes[i]; node; node = node->next)			(* user_func) (node->value, data);}unsigned int hash_table_get_size (HashTable *hash_table){	if ( hash_table ==NULL ) return 0;	return hash_table->nnodes;}static void hash_table_needresize(HashTable *hash_table){	if ((hash_table->size >= 3*hash_table->nnodes && hash_table->size > HASH_TABLE_MIN_SIZE) ||	        (3 * hash_table->size <= hash_table->nnodes && hash_table->size < HASH_TABLE_MAX_SIZE))		hash_table_resize (hash_table);}static void hash_table_resize (HashTable *hash_table){	HashNode **new_nodes;	HashNode *node;	HashNode *next;	unsigned int hash_val;	int new_size;	int i;	i = primes_closest(hash_table->nnodes);	new_size = i > HASH_TABLE_MAX_SIZE ? HASH_TABLE_MAX_SIZE : i < HASH_TABLE_MIN_SIZE ? HASH_TABLE_MIN_SIZE : i ;	new_nodes = mem_new ( sizeof(HashNode)*new_size);	for (i = 0; i < hash_table->size; i++)		for (node = hash_table->nodes[i]; node; node = next)		{			next = node->next;			hash_val = (* hash_table->hash_func) (node->key) % new_size;			node->next = new_nodes[hash_val];			new_nodes[hash_val] = node;		}	mem_destroy (hash_table->nodes);	hash_table->nodes = new_nodes;	hash_table->size = new_size;}static HashNode* hash_node_new (ADT key, ADT value){	HashNode *hash_node;	hash_node = mem_new ( sizeof(HashNode) );	hash_node->key = addref(ADT, key);	hash_node->value = addref(ADT, value);;	hash_node->next = NULL;	return hash_node;}static void hash_node_destroy (HashNode *hash_node){	unref(hash_node->key);	hash_node->key = NULL;	unref(hash_node->value);	hash_node->value = NULL;	mem_destroy(hash_node);}static void hash_nodes_destroy (HashNode *hash_node){	if (hash_node)	{		HashNode *node = hash_node;		HashNode *temp;		while (node->next)		{			unref(node->key);			node->key = NULL;			unref(node->value);			node->value = NULL;			temp = node;			node = node->next;			mem_destroy(temp);		}		unref(node->key);		node->key = NULL;		unref(node->value);		node->value = NULL;		mem_destroy(node);	}}static unsigned int primes_closest (unsigned int num){	int i;	for (i = 0; i < nprimes; i++)		if (primes[i] > num)			return primes[i];	return primes[nprimes - 1];}unsigned int direct_hash (ADT v){	return (unsigned int)v;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区在线播放| 欧美大片免费久久精品三p | 一区免费观看视频| 欧美日本精品一区二区三区| 高清免费成人av| 午夜精品久久久久久久久久| 亚洲国产电影在线观看| 91精品久久久久久蜜臀| 色婷婷综合久久久久中文一区二区| 蜜臀av性久久久久蜜臀aⅴ| 亚洲欧洲另类国产综合| 欧美电视剧免费观看| 在线视频国内一区二区| 国产不卡视频一区| 蜜臀av性久久久久蜜臀av麻豆| 一区二区三区成人| 国产日韩欧美亚洲| 欧美电视剧在线看免费| 欧美精品乱人伦久久久久久| 91在线国产福利| 国产91丝袜在线观看| 九九九精品视频| 青青青爽久久午夜综合久久午夜| 亚洲综合色噜噜狠狠| 综合自拍亚洲综合图不卡区| 国产亚洲精品aa午夜观看| 日韩一级片在线观看| 欧美日韩精品欧美日韩精品 | 在线视频一区二区三| 成人一区二区在线观看| 国产精品一区在线观看你懂的| 天堂av在线一区| 亚洲高清免费观看高清完整版在线观看| 国产精品私房写真福利视频| 国产网站一区二区| 久久美女艺术照精彩视频福利播放| 欧美日韩精品一二三区| 欧美日韩国产精品成人| 欧美日韩激情一区二区| 欧美伦理视频网站| 91精品久久久久久久99蜜桃| 欧美人妖巨大在线| 欧美精品视频www在线观看| 欧美嫩在线观看| 91麻豆精品国产自产在线 | 亚洲一区二区三区四区五区中文| 中文字幕巨乱亚洲| 国产精品久久三| 亚洲手机成人高清视频| 洋洋av久久久久久久一区| 亚洲美女视频在线| 亚洲国产精品麻豆| 日日夜夜精品视频天天综合网| 婷婷综合五月天| 日本特黄久久久高潮| 捆绑调教一区二区三区| 国产一区二区在线影院| 床上的激情91.| 色婷婷综合视频在线观看| 欧美在线小视频| 制服丝袜在线91| 精品久久久久久久久久久久久久久 | 日本欧美一区二区三区乱码| 美女精品自拍一二三四| 精品影院一区二区久久久| 国产剧情一区二区三区| 97久久超碰国产精品| 欧美熟乱第一页| 日韩视频在线观看一区二区| 日本一区二区三级电影在线观看| 国产精品成人一区二区艾草| 亚洲国产日韩av| 精品一区二区三区免费观看| jizzjizzjizz欧美| 精品视频1区2区3区| 2欧美一区二区三区在线观看视频| 亚洲国产精华液网站w| 亚洲主播在线播放| 精品一区二区三区在线播放| 99视频国产精品| 欧美一区二区三区色| 国产精品毛片a∨一区二区三区| 亚洲一区二区三区三| 精彩视频一区二区三区| 99re成人精品视频| 日韩欧美在线一区二区三区| 中文字幕在线不卡一区二区三区| 日韩—二三区免费观看av| 盗摄精品av一区二区三区| 精品视频在线免费看| 欧美激情一区二区| 五月婷婷另类国产| 国产成人午夜99999| 欧美日韩国产123区| 国产午夜精品一区二区三区四区| 亚洲成人免费影院| 成人高清伦理免费影院在线观看| 欧美一区二区三区视频免费| 亚洲欧洲另类国产综合| 韩国女主播一区| 欧美日韩国产bt| 亚洲免费观看高清完整版在线观看| 久久99热狠狠色一区二区| 在线免费精品视频| 国产精品久久久久久久久搜平片 | 一区二区国产视频| 国产精品亚洲午夜一区二区三区 | 91免费看视频| 久久先锋影音av| 天堂一区二区在线免费观看| av色综合久久天堂av综合| 久久久蜜桃精品| 五月天网站亚洲| 色一区在线观看| 国产精品久久久久久久岛一牛影视 | 成人免费av网站| 欧美精品一区二区三区在线播放| 三级一区在线视频先锋| 在线欧美日韩国产| 亚洲精选在线视频| 不卡高清视频专区| 国产亚洲欧美激情| 久久99国产乱子伦精品免费| 91精品国产麻豆国产自产在线| 一区二区三区在线看| 91在线免费看| 综合久久久久久久| 国产69精品久久99不卡| 国产亚洲欧美在线| 国产成人av一区二区| 久久先锋资源网| 国产盗摄精品一区二区三区在线| 久久综合精品国产一区二区三区| 久久99国产精品久久99果冻传媒| 欧美精品乱人伦久久久久久| 天堂蜜桃一区二区三区| 欧美男女性生活在线直播观看| 亚洲国产一二三| 欧美日韩精品二区第二页| 天堂在线亚洲视频| 7777精品伊人久久久大香线蕉完整版| 性感美女极品91精品| 欧美日韩成人综合在线一区二区 | 久久99国内精品| 久久亚洲捆绑美女| 国产成人在线视频播放| 国产午夜精品美女毛片视频| 高清不卡一区二区| 亚洲欧美一区二区三区国产精品| 91在线视频18| 亚洲成国产人片在线观看| 欧美一区二区三区成人| 九色|91porny| 国产精品热久久久久夜色精品三区| 波多野洁衣一区| 亚洲午夜成aⅴ人片| 91精品国产综合久久精品图片| 精品一区二区免费| 亚洲国产精品av| 欧美性受极品xxxx喷水| 日韩在线卡一卡二| 欧美精品一区二区在线播放| 成人午夜视频网站| 亚洲五码中文字幕| 亚洲精品在线电影| 94-欧美-setu| 午夜免费欧美电影| 精品国产区一区| 91同城在线观看| 免费在线一区观看| 亚洲国产精品传媒在线观看| 欧洲精品在线观看| 国内精品自线一区二区三区视频| 一区在线观看视频| 日韩视频一区二区三区| 成人高清免费观看| 日韩电影网1区2区| 亚洲国产精品成人综合| 欧美日韩一区视频| 国产一区不卡精品| 亚洲高清免费观看| 亚洲国产精品二十页| 欧美日韩精品是欧美日韩精品| 极品少妇xxxx精品少妇| 亚洲三级在线播放| 精品剧情在线观看| 91福利在线观看| 国产成人精品综合在线观看| 亚洲成人av电影在线| 欧美激情综合网| 91精品国产色综合久久不卡电影| av在线不卡电影| 国内外成人在线| 性欧美疯狂xxxxbbbb| 国产精品伦一区| 亚洲在线成人精品| 久久色成人在线| 欧美日韩不卡视频| 99v久久综合狠狠综合久久| 狠狠色综合播放一区二区|