随笔分类 - 数据结构
摘要:"上一章" 我们讲了如何根据需要动态设置 的大小,在第四章中,我们使用了 来解决 的碰撞,其实解决方法有很多,这一章我们来介绍下其他方法。 本章将介绍两种解决 碰撞的方法: 1. 拉链法 2. 开放地址法 拉链法 使用拉链法,每一个 都会包含一个 ,当发生 时,就会将该记录插入在该位置的 后面,步骤
阅读全文
摘要:"上一章" 中,我们实现了 中的 、`搜索 删除 hash表 53 hash表`的大小。 设置 大小 现在,我们的 是固定大小( )的,当插入越来越多数据时,我们的 就会被插满,这个问题有两个原因: 1. 哈希表的性能随着高冲突率而降低 2. 我们的'hash表'只能存储固定数量的记录,如果我们存储
阅读全文
摘要:"上一章" 中,我们使用了 的技术来处理 ,并用了 实现,贲张我们将实现 中的 、`搜索 删除`接口。 实现接口 我们的 将会实现如下的接口: Insert函数 在 中插入一条记录时,我们需要遍历整个 知道找到一个空的位置,然后执行插入并将 的大小加 。`hash表 count hash表 缩放ha
阅读全文
摘要:"上一章" 我们解释了 中最重要的 ,并用伪代码和C语言实现了一个我们自己的 ,`hash函数 碰撞 碰撞`时我们改如何有效的处理呢?这章我们就来讲解下。 处理碰撞 中将无限大的输入映射到有限的输出中,当不同的输入映射到相同的输出时,就会发生 ,每个的 都会采用不同的方法来处理 。 我们的哈希表将使
阅读全文
摘要:"上一章" ,我们讲了 的数据结构,并简单实现了 的初始化与删除操作,这一章我们会讲解 和实现算法,并手动实现一个 函数。 Hash函数 本教程中我们实现的 将会实现如下操作: 输入一个字符串,然后返回一个 到`m`(Hash表的大小)的数字 为一组平常的输入返回均匀的 索引。如果Hash函数不是均
阅读全文
摘要:C语言中,我们在使用数组时,会需要对数组进行插入和删除的操作,这时就需要移动大量的数组元素,但在C语言中,数组属于 "静态内存分配" ,数组在定义时就必须指定数组的长度或者初始化。这样程序一旦运行,数组的长度就不能再改变,若想改变,就只能修改源代码。实际使用中数组元素的个数也不能超过数组元素的最大长
阅读全文

浙公网安备 33010602011771号