01.6哈希表

哈希表(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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值