91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

這是一個用c語言實現hashtable的例子, 里面適應折疊法實現散列函數,使用鏈表法處理沖突;

資源截圖

代碼片段和文件信息

#include?“stdio.h“
#include?“hashtable.h“
#include?“string.h“
#include?“malloc.h“

/*
*?獲取哈希表實體
*/
HashTable*?hashTable(int?size){

HashTable*?table?=?calloc(1?sizeof(HashTable));

if?(!table){
return?NULL;
}
table->size?=?size;
table->items?=?0;
table->list?=?calloc(size?sizeof(HashNode));
if?(!table->list){
free(table);
return?NULL;
}

return?table;

}

/*
*?哈希表-散列函數
*/
int?hashIndex(char*?key?int?size){
int?segLen?=?3;
int?len?=?strlen(key);
int?i?=?0j?=?0k=0;
long?sum?=?0;
while?(i?
if?(len?-?i?<=?segLen){
k?=?len?-?i;
}else{
k?=?segLen;
}

for?(j?=?0;?j? sum?+=?key[i?+?j]?< }

if?(k? break;
}

i?+=?segLen;
}

return?sum%size;
}

/*
*?哈希表-設置鍵值
*/
bool?hashTable_set(HashTable*?table?char*?key?char*?value){
int?index?=?hashIndex(key?table->size);
HashNode*?node?=?table->list?+?index;
HashNode*?tmpNode?=?NULL;

if?(node->key?==?NULL?||?!strcmp(key?node->key)){
tmpNode?=?node;
}else{

while?(node->listNext?!=?NULL){
node?=?node->listNext;

if?(!strcmp(key?node->key)){
tmpNode?=?node;
break;
}
}

if?(!tmpNode){
node->listNext?=?calloc(1?sizeof(HashNode));
if?(!node->listNext){?return?false;?}
node->listNext->listLast?=?node;
tmpNode?=?node->listNext;

}

}

if?(!tmpNode->key){
table->items++;
tmpNode->key?=?key;
}

tmpNode->value?=?value;

return?true;

}

/*
*?哈希表-獲取值
*/
char*?hashTable_get(HashTable*?table?char*?key){
int?index?=?hashIndex(key?table->size);
HashNode*?node?=?table->list?+?index;


do{
if?(node->key?!=?NULL?&&?!strcmp(key?node->key)){
return?node->value;
}
node?=?node->listNext;
}?while?(node!=?NULL);


return?NULL;
}

/*
*?哈希表-刪除健值
*/
bool?hasTable_remove(HashTable*?table?char*?key){
int?index?=?hashIndex(key?table->size);
HashNode*?node?=?table->list?+?index;
HashNode*?tmpNode?=?NULL;

do{
if?(node->key?!=?NULL?&&?!strcmp(key?node->key)){
tmpNode?=?node;
break;
}
node?=?node->listNext;
}?while?(node->listNext?!=?NULL);

if?(tmpNode){
if?(!tmpNode->listLast){
tmpNode->key?=?NULL;
table->items--;
return?true;
}

tmpNode->listLast->listNext?=?tmpNode->listNext;
if?(tmpNode->listNext){
tmpNode->listNext->listLast?=?tmpNode->listLast;
}
free(tmpNode);
table->items--;
return?true;

}

return?false;

}

/*
*?遍歷哈希表
*/
void?hashTable_each(HashTable*?table?void?(*func)(char*?keychar*?value)){
int?i;
HashNode*?node;

if?(!func?||?!table->items){
return;
}

for?(i?=?0;?i?size;?i++){
node?=?table->list?+?i;

do{
if?(node->key?!=?NULL){
func(node->key?node->value);
}
node?=?node->listNext;
}?while?(node!=?NULL);
printf(“\n“);
}
}

/*
*?哈希表-刪除哈希表
*/
void?hashTable_delete(HashTable*?table){
in

評論

共有 條評論