求哈希表的程序,100分求助!

pzl 2004-01-03 12:09:20
求哈希表的程序,要用链表实现的!谢谢,急用!
...全文
68 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pzl 2004-01-05
  • 打赏
  • 举报
回复
typedef unsigned(*hash_function_t)(element_t);
这句里,unsigned后面不是应该跟一个变量名吗?unsigned只是表示无符号呀。
能否给一个主程序呢?谢谢指教!
短歌如风 2004-01-04
  • 打赏
  • 举报
回复
定义一个函数指针类型,用它来保存计算hash key的散列函数。比如:
unsigned my_hash_key(elelemt_t data);

...
PHash table;
table = Hash_Create(4099, my_hash_key);

我用element_t表示要存储到表中的元素类型,因为我知道你要存储的类型是什么。具体到你要用的类型时可能会导致代码有些变化,比如如果是字符串类型时可能要处理一些内存动态分配与释放的代码。
pzl 2004-01-04
  • 打赏
  • 举报
回复
typedef unsigned(*hash_function_t)(element_t);
这句是什么意思,请指教!
pzl 2004-01-03
  • 打赏
  • 举报
回复
up
短歌如风 2004-01-03
  • 打赏
  • 举报
回复
typedef struct _Node
{
element_t data;
struct _Node* next;
}Node, *PNode;

typedef unsigned(*hash_function_t)(element_t);

typedef struct _Hash
{
unsigned size;
unsigned element_count;
hash_function_t function;
PNode* elements;
} Hash, *PHash;

PHash Hash_Create(unsigned size, hash_function_t function)
{
PHash Result;
Result = (PHash)malloc(sizeof(Hash));
Result -> size = size;
Result -> function = function;
Result -> element_count = 0;
Result -> elements = (PNode*)calloc(sizeof(PNode) * size);
}

void Hash_Add(PHash hash, element_t element)
{
unsigned key;
PNode NewNode;
key = hash->function(element);
PNode = (PNode)malloc(sizeof(Node));
PNode -> next = ->elements[key];
PNode -> date = element;
hash->elements[key] = PNode;
hash->element_count ++;
}

PNode Hash_Find(PHash hash, element_t element)
{
unsigned key;
PNode ANode;
key = hash->functon(element_t);
ANode = hash->elements[key];
while(ANode != NULL && ANode->data != element)
ANode = ANode->next;
return ANode;
}

void Hash_Destroy(PHash hash)
{
int i;
PNode ANode;
for (i = 0;i < hash->size; i ++)
{
while(hash->elements[i] != NULL)
{
ANode = hash->elements[i];
hash->elements[i] = ANode->next;
free(ANode);
}
}
free(hash->elements);
free(hash);
}



33,029

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧