关于C语言Linked List实现的疑问:哈希冲突时节点是否被覆盖?
哈希链表中
snowflakes[hash_code] = snow语句的行为说明 是的,直接执行snowflakes[hash_code] = snow时,当第二个哈希码为21的节点插入,会直接覆盖哈希桶中原来指向第一个节点的指针,导致第一个节点丢失,无法形成链式串联。
要实现同哈希码节点的链式存储,正确的逻辑应该是先将新节点的next指向当前哈希桶的头节点,再更新哈希桶的头指针指向新节点,示例代码如下:
snow->next = snowflakes[hash_code]; snowflakes[hash_code] = snow;
这样新节点会被挂载到链表头部,原有节点不会丢失,同哈希码的节点就能形成完整的链式结构。
内容的提问来源于stack exchange,提问作者arifnone
相关产品推荐
相关产品推荐

