TCPL学习毕节:第六章hash表

对于P126的哈希表构成:

 1 struct nlist *install(char *name, char *defn)
 2 {
 3     struct nlist *np;
 4     unsigned hashval;
 5     if ((np = lookup(name)) == NULL)
 6     {
 7         np = (struct nlist *) malloc(sizeof(*np));
 8         if (np == NULL || (np->name = strdup(name)) == NULL)
 9             return NULL;
10         hashval = hash(name);
11         np->next = hashtab[hashval];
12         hashtab[hashval] = np;
13     } else
14         free((void *) np->defn);
15     if ((np->defn = strdup(defn)) == NULL)
16         return NULL;
17     return np;
18 }  

这两句应该注意一下:

1 np->next = hashtab[hashval];
2 hashtab[hashval] = np;

这两句的作用是将后插入的数据放在以前插入的数据的前面,让其下次访问的时候可以先访问到,具体的含义未知,应该是为了使得关联性的数据查找起来更加方便之用。

时间: 2024-10-17 03:18:06

TCPL学习毕节:第六章hash表的相关文章

2017.2.28 activiti实战--第六章--任务表单(一)动态表单(待)

学习资料:<Activiti实战> 第六章 任务表单(一)动态表单 内容概览:本章要完成一个OA(协同办公系统)的请假流程的设计,从实用的角度,讲解如何将activiti与业务紧密相连. 第四章中讲解了两种表单:动态表单和外置表单的区别.这里将使用不同的表单来完成相同的功能. 1 动态表单:<activiti:formProperty> 2 外置表单:<activiti:formKey>

CCNA学习指南 第六章 下载

本章讲述静态路由和动态路由的配置.动态路由协议涉及RIPv1.RIPv2和IGRP,这三个动态路由协议都属于距离矢量型路由协议. CCNA学习指南 第六章 下载

C++ Primer Plus学习:第六章

C++入门第六章:分支语句和逻辑运算符 if语句 语法: if (test-condition) statement if else语句 if (test-condition) statement1 else statement2 if else if else语句 if (test-condition1) statement1 else if (test-condition2) statement2 else statement3 2 逻辑表达式 逻辑OR运算符:|| 当两个条件中有一个或全部

Android学习笔记—第六章 Asynctask异步加载

第六章 Asynctask 异步加载 1.好处:不需要创建线程就可管理线程 缺点:步骤多 2.步骤: (1)创建一个类继承Asynctask<xxx,xxx,xxx>; 三个泛型参数: 第一个:决定了execute()方法的传入值类型,决定了doInBackground()方法的传入值类型 第二个:决定了publishProgress()方法的传入值类型,决定了onProgressUpdate()方法的传入值类型 第三个:决定了doInBackground()方法的返回值类型,决定了onPos

Java学习笔记—第六章 流程控制语句

第六章  熟悉Java的流程控制语句 Java的程序流程控制分为顺序结构.选择结构.循环结构和跳转语句. 顺序结构:按照程序代码自上而下执行,直到程序结束,中间没有任何判断和跳转. 选择结构(分支结构):判断给定的条件,根据判断结果控制程序的流程.包括if语句和switch语句. 2.1 if语句:通过判断给定表达式的值来决定程序的流程.常见if语句的形式有三种: (1)if(expression){ statement: } (2)if(expression){ statement; }els

爬虫学习之第六章Scrapy-Redis分布式组件

第一节:redis数据库介绍 概述 redis是一种支持分布式的nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,list列表[队列和栈],set[集合],sorted set[有序集合],hash(hash表)).相关参考文档:http://redisdoc.com/index.html redis使用场景: 登录会话存储:存储在redis中,与memcached相比,数据不会丢

小甲鱼零基础汇编语言学习笔记第六章之包含多个段的程序

在前面的几个章节中,我们的程序都是只有一个代码段,本章我们开始学习如何编写包含多个段的程序. 1.在代码段中使用数据 首先考虑这样一个问题,计算以下8个数据的和,结果存放在ax寄存器中: 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H 在前面的课程中,我们都是累加某些内存单元中的数据,并不关心数据本身,可现在我们要累加就是已经给定了数值的数据. 代码如下: 1 assume cs:codesg 2 codesg segment 3 dw 0123H

MYSQL必知必会读书笔记 第十五和十六章 联结表

为什么要使用联结? 如果数据存储在多个表中,怎样使用单条SELECT语句检索出数据?答案就是使用联结.简单地说,可以联结多个表返回一组输出,联结在运行时关联表中正确的行. 1.创建联结 SELECT vend_name,prod_name,prod_price from vendors,products WHERE vendors.vend_id=products.vend_id ORDER BY vend_name,prod_name; 注意:在引用列可能出现二义性时,必须使用完全限定列名.

《Spring实战》学习笔记-第六章:web视图解析

本章主要内容包括: 将model数据展现为HTML JSP视图的使用 在前面的章节中,我们主要关注点在于编写控制来处理web请求,同时也创建了一些简单的视图来展现请求返回的model数据,本章我们将主要讨论在控制器完成请求处理之后和将返回结果展示到用户的浏览器之前,这个过程之间发生了什么. 理解视图解析 在之前章节中所编写的控制器中并没有直接生成HTML的方法,它只是将数据填充到model中,然后将model传送到视图中进行展现. Spring MVC中定义了一个ViewResolver接口: