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

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

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

近日周立功教授公开了数年的心血之作《程序设计与数据结构》,电子版已无偿性分享到电子工程师与高校群体下载,经周立功教授授权,特对本书内容进行连载。

>>>> 1.1.1 哈希表的实现

1. 初始化

hash_db_init()接口用于哈希表实例的初始化,在定义哈希表结构体类型时,哈希表数组大小、记录长度、关键字长度和哈希函数都需要由用户根据实际情况确定,其函数原型定义如下(hash_db.h):

int hash_db_init (

           hash_db_t       *p_hash,                          // 指向哈希表实例的指针

         unsigned int     size,                              // 哈希表大小

         unsigned int     key_len,                         // 关键字长度

         unsigned int     value_len,                            // 记录长度

         hash_func_t     pfn_hash);                            // 哈希函数

在这里,以学生记录为例,创建一个大小为250组的哈希表:

      hash_db_t  hash_students;

      hash_db_init(

           &hash_students,

           250,                                                 // 大小为250

           6,                                                // 关键字长度为6字节

           sizeof(student_t),                                   // 记录的长度

           (hash_func_t)db_id_to_idx);                          // 哈希函数 

在初始化函数的实现中,需要按照size指定的大小分配内存,用于存储哈希表的各个表项(链表头),接着需要完成各个链表头和结构体成员的初始化,初始化函数的实现范例详见程序清单3.63。

程序清单3.63  初始化函数范例程序

1    int hash_db_init (hash_db_t   *p_hash, unsigned int si

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

网站地图

Top