哈希表 哈希冲突解决之链地址法

本文介绍了哈希表的概念,利用哈希函数将关键字压缩到数组下标,通过链地址法处理哈希冲突。在链地址法中,每个哈希表单元包含一个链表,数据项根据关键字映射到相应单元并插入链表。同时讨论了装填因子在链地址法中的特点,并提供了使用链地址法实现哈希表的步骤:创建link类、SortedList类,以及测试类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

哈希函数: 使用特定的哈希算法,将关键字哈希化,压缩到一个较小的范围

哈希表: 使用哈希算法, 把一个大范围的数字哈希化成一个小范围的数字。 这个小范围对应着数组的下标。 使用哈希函数向数组插入数据后, 这个数组称为哈希表

链地址法: 开放地址法中,通过在哈希表中寻找一个空位解决哈希冲突问题。另一个方法是在哈希表每个单元中设置链表。某个数据项的关键字还是像通常一样映射到哈希表的单元,而数据项本身插入到这个单元的链表中

装填因子: 链地址法中的装填因子(数据项数和哈希表容量的比值)与开发地址法的不同。 在链地址法中,需要在有N个单元的数组中装入N个或更多的数据项;因此装填因子一般为1,或比一大。 这没问题;因为,某些位置包含的链表中包含两个或两个以上的数据项。

下面将使用链地址法 实现哈希表并解决哈希冲突问题

1. 创建一个link类

public class Link {

    private int iData;
    public Link next;


    public Link(int it){
        this.iData = it;
    }

    public int getKey(){
        return iData;
    }

    public void displayLink(){
       System.err.print(iData+" ");
    }
}

2. 创建一个SortedList类

public class SortedList {

    private Link first;


    public void SortedList(){
        first = null;
    }

    public void insert(Link theLink){
        int key = theLink.getKey();
        Link previous =null;
        Link current = first;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值