Tip:
Highlight text to annotate it
X
現在我們創建了我們的空 hash table
下一步,要找出查找 (lookup) 和加入 (add) 項目的方法
這二者的第一步是相同的
我們需要找出正確的'桶',這是我們接下來要做的事
記得 hash table 的概念嗎
有一個'桶'列表
每個'桶'都是項目列表,每個項目包括 key 和 value 列表
無論我們要做查找,以及找出與某個字相關的值
或是想要做加入 (add),對某個字加入新值
第一步,都是要找出正確的'桶'
如果你找出正確的'桶',如果要進行查找,下一步是
瀏覽'桶'中的所有項目
找出與關鍵字相符合的項目
如果要進行加入,同樣需要從找出正確的'桶'開始
然後進行瀏覽,看看這個字是否已經存在
如果不存在,就加入這個新字, 這樣就有了新的項目,包含這個字和值
兩者都取決於能否找到正確的'桶'
我們只需寫一次程式碼,在查找和加入時, 就可以重複使用這些程式碼
我們的目標是定義程序, 名為 hash-table-get-bucket,需要兩個輸入
hash table 和關鍵字,輸出是'桶',關鍵字出現的'桶'
我們不知道關鍵字在表中是否確實存在
可能在'桶'的某處,也可能不在
但重要的是, hash-table-get-bucket 的任務是找出'桶'
之前定義過的 hash-string 程序,對這一步驟非常有用
hash-string 需要兩個輸入,包括字串,即關鍵字
以及'桶'數,它的輸出是一個數字,即'桶'的指標
在定義 hash-table-get-bucket 要思考一下, 這裡有些地方不太一致
hash-string 的輸入是'桶'數大小,是一個數字
hash-table-get-bucket 的兩個輸入是 hash table 和關鍵字
你需要了解如何獲得 hash table 的大小, 將它傳入 hash-string
如果你還記得 hash table 的結構
應該知道如何進行
請記住我們的 hash table 是一個'桶'列表, 因此要傳入hash-string 的值是 hash table 的大小
也就是 hash table 中,'桶'列表的元素個數
看看你能否定義 hash-table-get-bucket
提示一下,你可以運用非常少的程式碼來完成整個定義
應該只要一行就可以了