【发布时间】:2022-01-10 07:29:30
【问题描述】:
我正在用 C 语言构建一个散列表,使用开放散列(分离链)来存储单词。我不关心存储具有相同哈希键的单词的顺序。
目前,我的哈希表 (struct item * arr) 有一个指向结构 (struct dict * d) 的指针。更具体地说,这个表是一个包含一个单词 (char * word) 和一个指针 (struct item * next 的项目数组 (struct item) >)。
我不清楚两个方面:
1.在碰撞后将单词链接在一起(插入新项目)时,我应该插入 元素在链表的开头还是结尾?
我看到它是双向的,但后者似乎更受欢迎。但是,前者对我来说似乎更快,因为我只需要将第一个项目的指针设置为我的新项目,并将其指针设置为 null。我不必进行任何指针追踪(即遍历我的链表,直到找到空指针)。
2. 我的哈希表应该是指向项目(结构项目)的指针数组,还是 就像我所做的那样,只是一个项目数组(结构项目)?
换句话说,是否应该将特定哈希键的第一项插入到第一个单元格(一个空单元格)中,还是应该在该单元格中已经有一个指针,我们将指向这个新项?
【问题讨论】: