資源簡(jiǎn)介
在程序中我們對(duì)關(guān)鍵字key應(yīng)用散列函數(shù)H(key)來判斷關(guān)鍵字key是否在散列表中,即計(jì)算H(key)的值,H(key)值確定所存數(shù)據(jù)在散列表中的位置。這樣一個(gè)數(shù)據(jù)元素的地址是通過函數(shù)來計(jì)算的,所以數(shù)據(jù)元素并不需要按照特定的順序來存放。但是散列函數(shù)H(key)將關(guān)鍵字映射為一個(gè)整數(shù)時(shí),有可能兩個(gè)關(guān)鍵字的地址相同,所以構(gòu)造散列函數(shù)時(shí)要考慮盡量減少?zèng)_突的發(fā)生。構(gòu)造散列函數(shù)有多種方法,如:平方取中法、除留余數(shù)隨機(jī)數(shù)法。本程序采用除留余數(shù)法。程序的具體實(shí)現(xiàn)如下:本程序是用模板類myhash來實(shí)現(xiàn),包括protected和public屬性成員。其中protected成員有*ht(自定義散列表指針)、*empty(bool類型指針,功能是將元素值空、m(散列表容量)、p(除留余數(shù)法的除數(shù))以及輔助函數(shù)H(key)(散列函數(shù))和collision(處理沖突的函數(shù));public成員包括構(gòu)造函數(shù)、析構(gòu)函數(shù)和復(fù)制構(gòu)造函數(shù)以及=重載函數(shù),其它成員函數(shù)主要有:traver(遍歷散列表)、show()(打印出哈希表所存的元素)返回值為bool類型的函數(shù)search\insert\Delete。search函數(shù)(查詢關(guān)鍵字為key的元素的位值)、insert函數(shù)(插入元素e到哈希表中)、Delete函數(shù)(刪除關(guān)鍵字為key的元素)。本程序的main函數(shù)同樣采用兩種類型的數(shù)據(jù)來進(jìn)行測(cè)試,int型和char型,主要測(cè)試元素的插入、刪除和搜索。
代碼片段和文件信息
評(píng)論
共有 條評(píng)論