哈希表(Hash table)(散列表)
-
散列表(Hash table,也叫哈希表),是根據關鍵碼值(Key value)而直接訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中的一個位置來訪問記錄,以加快查找的速度。這個映射函數叫做散列函數,存放的數組叫做散列表。
給定表M,存在函數f(key),對任意給定的關鍵字值key,帶入函數後若能得到包含該關鍵字的記錄在表中的地址,責成M為哈希表。函數f(key)為哈希函數。
-
實現增刪改查僱員的信息
//僱員信息 type Emp struct { Id int Name string Next *Emp } //僱員鏈錶從 type EmpLink struct { Head *Emp } //鏈錶插入操作 func (this *EmpLink) Insert(emp *Emp) { cur :=this.Head//輔助指針 var pre *Emp//輔助指針,cur之前 //不保留空的頭部,直接賦值 if cur == nil { this.Head = emp return } //如果需要替換頭結點 if cur.Id>emp.Id { emp.Next = cur this.Head = emp return } for { //如果沒到尾部繼續循環 if cur != nil { //如果當前ID大於傳入的僱員ID //就可以退出循環,在此位置添加 if cur.Id>emp.Id{ break } if cur.Id == emp.Id { fmt.Println("不可插入相同的ID!") return } pre = cur cur = cur.Next }else { //如果當前為nil,即循環到尾部 //將最大的ID僱員添加在尾部 break } } pre.Next = emp emp.Next = cur } //鏈錶查找操作,更新操作可複用 func (this *EmpLink) Find(id int) *Emp{ cur := this.Head if cur == nil { fmt.Println("所查鏈錶為空鏈錶") return nil } for { if cur