💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
> # 链地址法(拉链法) - **链地址法(拉链法)(Separate Chaining)**:在哈希表的每个槽位(桶)中使用一个链表或其他数据结构存储具有相同哈希值的键值对。当发生哈希冲突时,新的键值对被添加到对应槽位的链表中,而不是直接覆盖原有的值 ~~~ package main import ( "fmt" ) type Node struct { Key int Value int Next *Node } type HashTable struct { Table map[int]*Node } func Constructor() *HashTable { return &HashTable{Table: make(map[int]*Node)} } func (ht *HashTable) Insert(key int, value int) { index := key % 10 if ht.Table[index] == nil { ht.Table[index] = &Node{Key: key, Value: value, Next: nil} } else { newNode := &Node{Key: key, Value: value, Next: ht.Table[index]} ht.Table[index] = newNode } } func (ht *HashTable) Get(key int) int { index := key % 10 if ht.Table[index] == nil { return -1 } currentNode := ht.Table[index] for currentNode != nil { if currentNode.Key == key { return currentNode.Value } currentNode = currentNode.Next } return -1 } func main() { ht := Constructor() ht.Insert(10, 5) ht.Insert(20, 7) ht.Insert(30, 9) fmt.Println(ht.Get(10)) // Output: 5 fmt.Println(ht.Get(20)) // Output: 7 fmt.Println(ht.Get(30)) // Output: 7 } ~~~