struct nlist {
struct nlist *next;
char *name;
char *defn;
};
原书只给出了结构并没有解释清楚 next ,只是说next 是指向该链表后续块。 并没有说明用在哪里,当创建一个节点,后会发现这个next 打印出来为 nil。
实际上这个next 是为了解决hash冲突而存在的。散列函数返回的值,在众多的name 中必须会产生重复值,当产生重复值时,这个next 就有用了。
当install 一个新的元素,这个元素的hash返回的数值与前一个相等时, 会将 新的节点的next 指向已存在元素的指针。 将数组hashtab[hashval] 指向新的元素。