C++ 如果我们使用一个链表数组来实现哈希表;加上「;可以以不需要遍历的方式实现。这是真是假?

C++ 如果我们使用一个链表数组来实现哈希表;加上「;可以以不需要遍历的方式实现。这是真是假?,c++,visual-c++,C++,Visual C++,如果我们使用链表数组来实现哈希表,“add”可以以一种不需要遍历的方式实现。这是真是假?我很困惑是哪一本,因为我读了这本书,我只是不能安静地理解这个问题。如果你也可以发布一个简短的描述,为什么答案是T或F,这样我就可以得到一个很好的理解。我相信答案是正确的 问题基本上是这样的: 当发生冲突时,是否需要在链表的末尾添加新值,从而在该过程中遍历整个列表 建议的实现是一组链表。链表只是用来处理冲突,这意味着它们包含的节点不需要按任何特定顺序排列 发生冲突时,只需创建一个新节点并将其设置为链接列表的标题

如果我们使用链表数组来实现哈希表,“add”可以以一种不需要遍历的方式实现。这是真是假?我很困惑是哪一本,因为我读了这本书,我只是不能安静地理解这个问题。如果你也可以发布一个简短的描述,为什么答案是T或F,这样我就可以得到一个很好的理解。

我相信答案是正确的

问题基本上是这样的:

当发生冲突时,是否需要在链表的末尾添加新值,从而在该过程中遍历整个列表

建议的实现是一组链表。链表只是用来处理冲突,这意味着它们包含的节点不需要按任何特定顺序排列

发生冲突时,只需创建一个新节点并将其设置为链接列表的标题。将节点预先添加到链接列表非常简单,不需要遍历整个列表

作为旁注:查找需要遍历链接列表

一个直观的例子 假设一个大小为3的哈希表存储动物。它目前包含“熊”、“狮子”和“鹰”:

+---+
| 0 | -> 0
+---+
| 1 | -> bear -> lion -> 0
+---+
| 2 | -> eagle -> 0
+---+
图像我们尝试添加'fox',哈希函数返回1。索引1处的表已经有两种动物的列表:碰撞

我们不需要在列表的末尾添加“fox”,从而遍历整个列表,而只需将“fox”作为列表的新标题:

+---+
| 0 | -> 0
+---+
| 1 | -> fox -> bear -> lion -> 0
+---+
| 2 | -> eagle -> 0
+---+
代码示例
模板
类哈希表{
样板
结构链接列表{
值类型值;
LinkedList*下一步;
}
int散列(常量键和键){
//一些散列算法
}
LinkedList*表[Size];//存储指向LinkedList的指针的数组
公众:
无效添加(键类型键、值类型值){
int index=散列(键);
LinkedList new_entry=新建LinkedList();
new_entry.value=值;
//下一行代码有两种可能的结果:
//1.表[index]包含一个空指针,因此它是空的,并且new_entry.next将被设置为空。
//2.表[index]包含指向LinkedList的指针,即new_entry。下一步还将指向该LinkedList。
new_entry.next=表[索引];
表[索引]=新的_条目;
}
};