周立功来讲解哈希表的实现
13 free(p_hash-> 13 free(p_hash->p_head); // 释放链表头结点数组空间
15 return 0;
16 }为便于查阅,如程序清单3.29所示展示了hash_db.h文件的内容。
程序清单3.68 hash_db.h文件内容
1 #pragma once;
2 #include "slist.h"
3
4 typedef unsigned int (*hash_func_t) (const void *key); // 哈希函数类型,返回值为整数,参数为关键字
5 struct _hash_db{
6 slist_head_t *p_head; // 指向数组首地址
7 unsigned int size; // 数组成员数
8 unsigned int value_len; // 一条记录的长度
9 unsigned int key_len; // 关键字的长度
10 hash_func_t pfn_hash; // 哈希函数
11 };
12 typedef struct _hash_db *hash_db_t; // 指向哈希表对象的指针类型
13
14 int hash_db_init (hash_db_t *p_hash, // 哈希表初始化
15 unsigned int size,
16 unsigned int key_len,
17 unsigned int value_len,
18 hash_func_t pfn_hash);
19
20 int hash_db_add (hash_db_t *p_hash, const void *key,const void *value); // 添加记录
21 int hash_db_del (hash_db_t *p_hash, const void *key); // 删除记录
22 int hash_db_search(hash_db_t *p_hash, const void *key, void *value); // 查找记录
23 int hash_db_deinit (hash_db_t *p_hash); // 解初始化以使用该链式哈希表管理系统来管理学生记录为例,综合范例程序详见程序清单3.30。
程序清单3.69 哈希表综合范例程序
- 电源软启动的实用设计技巧(07-16)
- 周立功:动态分布内存——malloc()函数与calloc()函数(07-22)
- 周立功“程序设计与数据结构”:深度解剖动态分布内存的free()函数与realloc()函数(07-25)
- 周立功教你学程序设计技术:做好软件模块的分层设计,回调函数要这样写(07-30)
- 周立功教你学C语言编程:教你数组是如何保存指针的(07-31)
- 算法的泛化问题,这些坑你可能都经历过!|周立功教你学软件设计(08-01)