第三章--拉链法散列表

本文详细探讨了拉链法在散列表中的应用,通过实例分析了如何使用Java实现拉链法来解决散列冲突,提升查找效率。
摘要由CSDN通过智能技术生成
public class SeparateChainingHashST<Key, Value> {
    /**
     * 这是拉链法散列表,同时利用了第三章最开始使用的链表实现的符号表。
     * 使用数组的索引来表示符号表的key,为了解决key过大而导致的数组过大问题,利用hash方法对key进行处理,而处理后的key有可能会出现索引相同的现象,为了解决冲突,数组的值用链表来表示。
     */

    private int n;                                // 键值对的总数
    private int m;                                // 散列表的大小
    private SequentialSearchST<Key, Value>[] st;  // 存放链表对象的数组

    public SeparateChainingHashST() {             //无参构造
        this(997);
    }
    public SeparateChainingHashST(int m) {       //有参构造
        this.m = m;                              //创建M条链表
        st =  (SequentialSearchST<Key,Value>[])new SequentialSearchST[m];//java不支持泛型数组,故写成这个形式。
        for (int i = 0; i < m; i++)
            st[i] = new SequentialSearchST<Key, Value>();
    }

    private int hash(Key key) {                       //获得键的hash值
        return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值