資料結構hash表

2021-09-27 08:55:31 字數 1728 閱讀 1198

看乙個實際需google公司的乙個上機題:

有乙個公司

,當有新的員工來報道時

,要求將該員工的資訊加入

(id,性別,

年齡,住址..),

當輸入該員工的id時

,要求查詢到該員工的 所有資訊.

要求:

不使用資料庫

,盡量節省記憶體

,速度越快越好

=>

雜湊表(雜湊)

雜湊表

(hash table

,也叫雜湊表),是根據關鍵碼值

(key value)

而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中一

個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的

陣列叫做雜湊表

//如果不是第乙個雇員,則使用乙個輔助的指標,幫助定位到最後

emp curemp = head;

while(true)

curemp = curemp.next; //後移

}//退出時直接將emp 加入鍊錶

curemp.next = emp;

}//遍歷鍊錶的雇員資訊

public void list(int no)

system.out.print("第 "+(no+1)+" 鍊錶的資訊為");

emp curemp = head; //輔助指標

while(true)

curemp = curemp.next; //後移,遍歷

}system.out.println();

}//根據id查詢雇員

//如果查詢到,就返回emp, 如果沒有找到,就返回null

public emp findempbyid(int id)

//輔助指標

emp curemp = head;

while(true)

//退出

if(curemp.next == null)

curemp = curemp.next;// 後移判斷下乙個id

}return curemp;}}

public int hashfun(int id)
建立hashtable

class hashtab 

}//新增雇員

public void add(emp emp)

//遍歷所有的鍊錶,遍歷hashtab

public void list()

}//根據輸入的id,查詢雇員

public void findempbyid(int id) else

}//編寫雜湊函式, 使用乙個簡單取模法更具id分配到不同列表中

public int hashfun(int id)

}

Hash表的資料結構

hashmap與hashset的結構是差不多的,以陣列作為桶,每個桶中裝的是鍊錶,當鍊表的元素超過8個時桶中的元素自動轉為紅黑樹儲存。hashmap與hashset的預設負載因子為0.75,當hash表中的元素超過陣列長度乘以負載因子的積時會擴容,通過呼叫resize 實現,一般是擴容一倍。使用乙個...

資料結構之hash表

1.查詢的資料是表式結構,可以想象成是資料庫裡的表 2.查詢的目的是找出表中關鍵字與給定關鍵字相等的資料行 3.雜湊表就是定義了每乙個資料行的行號 4.雜湊演算法就是 行號 f 關鍵字 所以在雜湊表裡查詢資料時,不需要把給定關鍵字與每一行的關鍵字比較是否相等來找到行號,而是直接由給定的關鍵字計算出行...

資料結構之雜湊(hash)表

最近看php陣列底層結構,用到了雜湊表,所以還是老老實實回去看結構,在這裡去總結一下。這裡先說一下雜湊 hash 表的定義 雜湊表是一種根據關鍵碼去尋找值的資料對映結構,該結構通過把關鍵碼對映的位置去尋找存放值的地方,說起來可能感覺有點複雜,我想我舉個例子你就會明白了,最典型的的例子就是字典,大家估...