41 lines
1.5 KiB
C
Executable File
41 lines
1.5 KiB
C
Executable File
/*************************************************************************
|
||
> File Name: LinkedHashMap.h
|
||
> Author: jinshaohui
|
||
> Mail: jinshaohui789@163.com
|
||
> Time: 18-11-08
|
||
> Desc:
|
||
************************************************************************/
|
||
|
||
|
||
#ifndef __LINKED_HASH_MAP__
|
||
#define __LINKED_HASH_MAP__
|
||
|
||
/*数据存放节点*/
|
||
typedef struct _lisked_hash_map_node
|
||
{
|
||
void *key; /*键*/
|
||
void *data; /*数据*/ZZ
|
||
struct _lisked_hash_map_node *next; /*哈希冲突时,用来挂接后续节点*/
|
||
struct list_head Dlist_node;/*用来挂接双向链表*/
|
||
}LiskedHashMapNode;
|
||
|
||
typedef struct _lisked_hash_map
|
||
{
|
||
LiskedHashMapNode **hTabs;/*哈希桶*/
|
||
struct list_head header;/*双向循环链表头*/
|
||
int size; /**/
|
||
int nel_max; /*支持最大节点数*/
|
||
int nel; /*当前节点数*/
|
||
int (*hash_value)(struct _lisked_hash_map *h,const void *key); /*哈希函数*/
|
||
int (*keycmp)(struct _lisked_hash_map *h,const void *key1,const void *key2);/*哈希key比较函数,当哈希数值一致时使用*/
|
||
void (*hash_node_free)(LiskedHashMapNode *node,int flg);/*用来释放节点内存*/
|
||
|
||
}LinkedHashMap;
|
||
|
||
typedef int (*hash_value_func)(struct _lisked_hash_map *h,const void *key); /*哈希函数*/
|
||
typedef int (*keycmp_func)(struct _lisked_hash_map *h,const void *key1,const void *key2);/*哈希key比较函数,当哈希数值一致时使用*/
|
||
typedef void (*hash_node_free_func)(LiskedHashMapNode *node,int flg);
|
||
|
||
LiskedHashMapNode * LinkedHashMap_delete(LinkedHashMap *h,void *key);
|
||
#endif
|