美文网首页
6.6表查找

6.6表查找

作者: Hy_Slin | 来源:发表于2018-02-11 14:06 被阅读0次

翻译的书就一点不好,有时候根本不知道说的是什么.理解不了.

我现在感觉看代码比看中文更容易懂.

nlist结构的成员有链表的下一级地址,定义的名字和替换文本.

首先定义了一个结构指针数组hashtab.有HASHSIZE个元素,每个元素都是一个指向nlist结构的指针.(这里的每个元素都相当于一个链表)

直接看hash(哈希)散列函数.
首先定义的hash函数是无符号类型的.保证了数值为非负.
运算过程也很简单.就是根据输入的字符串字符的数值(根据ASCII码表)进行运算.公式就是那个简单的算数运算,最后对这个值取余.因为它需要在这个表内查找,所以不能超过这个表(上面写的指针表).

然后是lookup函数
函数的参数是一个字符串,目的就是查找这个字符串.返回值是指向nlist结构的指针.
(这里的查找函数需要说一下前面的hash函数,因为hash函数是通过输入的字符串经过公式得到的一个值作为hashtab数组的下标.所以输入的字符如果是相同的或者凑巧碰到一起的就会是在一个下标里,输入的字符与表内有相同的一定会在一个下标内.所以只在同一个下标中的链表中找就可以.)
np得到需要查找链表的起始地址(hashtab是数组,hash函数返回下标,然后将这个下标的地址复制给np).
终止条件是np查到最后.
每执行一次循环体np指向链表的下一级.
循环体就是比较函数了.

然后install函数
首先处理未找到的情况.
给np分配空间.
如果空间不够,返回NULL.
然后处理正常情况.将定义的名字用hash函数处理得到hashtab数组的下标.
这个链表是从下往上链接的.最开始的块是最下面的,这里将当前最上面这个块链接到新建立这个块.(最开始我也不知道这种情况,我也是查了一下才明白.)
然后把结构指针数组的元素换成新建立的这个块.
找到相同的话将之前定义的替换文本释放.
然后将新读入的这个defn替换文本放入np->defn这个结构成员中.

相关文章

  • 6.6表查找

    翻译的书就一点不好,有时候根本不知道说的是什么.理解不了. 我现在感觉看代码比看中文更容易懂. nlist结构的成...

  • 据结构与算法学习-查找与二叉排序树

    查找表操作方式分为静态查找和动态查找。静态查找表(Static Search Table): 只作查找操作的查找表...

  • 查找

    静态查找表:只作查找操作的查找表 动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经...

  • 6.1 查找算法_基础

    1. 查找基本概念 查找:只有两种情况,查找成功,查找失败 查找表:查找的数据集合称为查找表 静态查找表 / 动态...

  • 重温数据结构_树表的查找

    线性表的查找的顺序查找和折半查找作为查找表的组织形式,其中折半查找效率较高。但由于折半查找要求表中记录按关键字有序...

  • 第9章 查找

    9.1 静态查找表 查找操作的性能分析平均查找长度(Average Search Length)。其中为查找表中第...

  • 静态查找表&动态查找表

    静态查找表:只查找,不改变集合内的数据元素。 一、顺序查找( Linear search,又称线性查找 )用逐一比...

  • 查找算法-Python

    无序表查找 线性查找 O( n ) 适用于线性表的顺序存储结构和链式存储结构。 有序表查找 二分查找 Binary...

  • 查找技术

    静态表查找 只做查找操作的查找表应用线性表结构来组织数据,用顺序查找算法。如果对主关键字排序,可以折半查找等高效查...

  • Ctrl+F——查找替换的功能扩展

    1、在所有工作表中查找 默认情况下,查找窗口中只是在当前的工作表中查找,如果要所有工作表中查找,就把查找范围修改为...

网友评论

      本文标题:6.6表查找

      本文链接:https://www.haomeiwen.com/subject/irbfrxtx.html