Hash算法中要解决一个碰撞冲突的办法,后文中描述了几种解决方法。下面代码中用的是链式地址法,就是用链表和数组实现HASH表。
he/*hash table max size*/ #define HASH_TABLE_MAX_SIZE 40 /*hash table大小*/ int hash_table_size=0; /*.BH----------------------------------------------------------------- ** 结构体定义 **.EH----------------------------------------------------------------- */ /*hashTable结构*/ typedef int HashKeyType; typedef struct{ OMS_TYPE__CurrFaultReport curr_fault_report; unsigned int begin_time[SYS_FAULT_REPORT_MAX_NUM]; unsigned int end_time[SYS_FAULT_REPORT_MAX_NUM]; unsigned int report_valid[SYS_FAULT_REPORT_MAX_NUM]; }HashValueType; typedef struct HashNode_Struct HashNode; struct HashNode_Struct { HashKeyType sKey; HashValueType nValue; HashNode* pNext; }; HashNode* hashTable[HASH_TABLE_MAX_SIZE]; //hash table data strcutrue /*=================hash table function======================*/ /*.BH----------------------------------------------------------------- ** **函数名: ** **功能:string hash function ** **参数: 无 ** **返回值:无 ** **设计注记: ** **.EH----------------------------------------------------------------- */ unsigned int hash_table_hash_str(const char* skey) { const signed char *p = (const signed char*)skey; unsigned int h = *p; if(h) { for(p += 1; *p != '