微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 周立功来讲解哈希表的实现

周立功来讲解哈希表的实现

时间:08-30 来源:周立功单片机 点击:

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  哈希表综合范例程序

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top