回 帖 发 新 帖 刷新版面

主题:哈希表(散列表)的设计与实现

哈希表(散列表)的设计与实现
【问题描述】
   设计哈希表实现电话号码查找系统。
【基本要求】
   (1) 设每个记录有下列数据项:电话号码、用户名、地址;
   (2) 从键盘输入各记录,分别以电话号码为关键字建立散列表;
   (3)采用拉链法解决冲突;
   (4)查找并显示给定电话号码的记录;
   (5) 查找并显示给定用户名的记录。

回复列表 (共8个回复)

沙发


高手帮个忙编下,用C语言的[em7]
我已经没办法了,编了2天没编出来 [em7]

板凳

就没有人会吗???太假了吧- -!

3 楼

不是没有人会
论坛的宗旨是“天下没有免费的午餐”
你的代码写的不好,没关系
你套代码出错了,没关系。把你的错误贴出来,同时把你的参考资料拿出来,大家给你分析,给你讲解。以上

4 楼

不错,想直接要代码的人不值得同情

5 楼

那怎么把我的程序上传呢?

6 楼

我已经把我的程序上传了, 关键字解决冲突那部分被我注释掉了
还请高手帮我看看我这程序是不是按照要求来的
第一次来论坛,不懂规矩,抱歉了

7 楼

哈希表,那是有套路的。
首先,要有一块空间,大小固定。假设空间大小为N。
然后,要有一个哈希函数。因为要求“以电话号码为关键字建立散列表”,所以这个函数的参数就是电话号码,函数的返回值是一个整数,并且这个整数的值大于等于0,小于N。
再然后,因为要求“采用拉链法解决冲突”,所以要懂得操作链表。

具体做法:
(1) 定义链表。链表的每个结点就是一条记录,包括了电话号码、用户名、地址。
(2) 定义一个数组,大小为N。数组的每个元素都是一个链表。
(3) 定义一个哈希函数。
(3) 初始化,把数组中每一个链表都初始化为空。
(4) 如果是新增一条记录,则把电话号码作为参数,调用哈希函数,假设返回值为n,则找到数组中的第n个元素(这个元素是一个链表),然后把这条记录添加到链表中。
(5) 如果是查找一条记录,则把电话号码作为参数,调用哈希函数,假设返回值为n,则找到数组中的第n个元素(这个元素是一个链表),然后在这个链表中查找。
(6) 完成后,销毁所有链表。

楼主的程序代码,还差了很多呢。按照上面的步骤一点一点的完成吧。
提醒一下:注意传值、传地址、传引用的区别,楼主的程序在这方面有错误。

8 楼

有谁帮忙纠正一下,我这份被老师退回来了
说是 没用到 建立哈希表 和 拉链法

我来回复

您尚未登录,请登录后再回复。点此登录或注册