


下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、散列表構(gòu)造與查找的動(dòng)態(tài)實(shí)現(xiàn)吳洲512126 廣東松山職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系 摘要數(shù)據(jù)結(jié)構(gòu)中散列表的教學(xué)一直是一個(gè)難點(diǎn),如果結(jié)合動(dòng)態(tài)的圖形演示,則可以使算法的描述更形象、更生動(dòng),使教學(xué)能產(chǎn)生良好的效果。關(guān)鍵詞散列表 沖突 線性探測(cè)散列表,又稱為哈希表,是線性表中一種重要的存儲(chǔ)方式和檢索方法。在散列表中,可以對(duì)節(jié)點(diǎn)進(jìn)行快速檢索。散列表算法的基本思想是:由結(jié)點(diǎn)的關(guān)鍵碼值決定結(jié)點(diǎn)的存儲(chǔ)地址,即以關(guān)鍵碼值k 為自變量,通過(guò)一定的函數(shù)關(guān)系h(稱為散列函數(shù)),計(jì)算出對(duì)應(yīng)的函數(shù)值h(k) 來(lái),將這個(gè)值解釋為結(jié)點(diǎn)的存儲(chǔ)地址,將結(jié)點(diǎn)存入該地址中,檢索時(shí),根據(jù)要檢索的關(guān)鍵碼值,用同樣的散列函數(shù)計(jì)算出地址,然后,到相應(yīng)
2、的地址中去獲取要找的結(jié)點(diǎn)數(shù)據(jù)。因此,散列表有一個(gè)重要特征:平均檢索的長(zhǎng)度不直接依賴于表中元素的個(gè)數(shù)。兩個(gè)不同的關(guān)鍵字,由于散列函數(shù)值相同,因而被映射到同一表位置上。該現(xiàn)象稱為沖突(Collision)或碰撞。發(fā)生沖突的兩個(gè)關(guān)鍵字稱為該散列函數(shù)的同義詞(Synonym)。解決沖突有多種方法,我們利用線性探測(cè)處理沖突。線性探查法(Linear Probing)基本思想是:將散列表T0.m-1看成是一個(gè)循環(huán)向量,若初始探查的地址為d(即h(key)=d),則最長(zhǎng)的探查序列為: d,d+l,d+2,m-1,0,1,d-1即:探查時(shí)從地址d開(kāi)始,首先探查Td,然后依次探查Td+1,直到Tm-1,此后又循
3、環(huán)到T0,T1,直到探查到Td-1為止。探查過(guò)程終止于三種情況: (1) 若當(dāng)前探查的單元為空,則表示查找失敗(若是插入則將key寫入其中); (2) 若當(dāng)前探查的單元中含有key,則查找成功,但對(duì)于插入意味著失??; (3) 若探查到Td-1時(shí)仍未發(fā)現(xiàn)空單元也未找到key,則無(wú)論是查找還是插入均意味著失敗(此時(shí)表滿)。利用開(kāi)放地址法的一般形式,線性探查法的探查序列為: hi=(h(key)+i)m 0im-1 /即di=i我們可以利用Delphi編寫演示程序,方法如下:窗體Form2組件屬性屬性值組件屬性屬性值Label1Caption請(qǐng)輸入關(guān)鍵碼的個(gè)數(shù)(小于50)Eidit1Textpane
4、l1Caption窗體Form1組件屬性屬性值組件屬性屬性值Label1Caption指定關(guān)鍵碼Button1Caption建散列表Label2Caption位置Button2Caption獲取關(guān)鍵碼Label3CaptionButton3Caption查找Label4Caption利用線性探測(cè)處理沖突建立的散列表Button4Caption關(guān)閉procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);beginif edit1.text thenif key=#13 thenbegin form2.close; if str
5、toint(edit1.Text)50 then pub:=50 else pub:=strtoint(edit1.text);end;end;procedure TForm1.FormCreate(Sender: TObject);var i:integer;beginform1.Caption:=inttostr(pub)+個(gè)關(guān)鍵碼的線性探測(cè)處理沖突的散列表!;for i:=0 to pub-1 do begin ed1i:=tedit.Create(self); ed1i.Parent:=self; ed1i.Text:=0; ed1i.SetBounds(10+i*25,20,30,3
6、0); ed2i:=tedit.Create(self); ed2i.Parent:=self; ed2i.Text:=-1; ed2i.SetBounds(10+i*25,120,30,30); bi:=tlabel.Create(self); bi.Parent:=self; bi.caption:=inttostr(i); bi.SetBounds(15+i*25,105,30,30); end;end;procedure TForm1.Button2Click(Sender: TObject);/獲取關(guān)鍵碼var i:integer;begin for i:=0 to pub-1 do
7、 ed2i.Text:=-1; for i:=0 to pub-1 do gjmi:=strtoint(ed1i.Text);end;procedure TForm1.Button1Click(Sender: TObject);/建散列表var i,j,k:integer;begin for i:=0 to pub-1 do begin j:=gjmi mod pub; if ed2j.text=-1 then ed2j.Text:=inttostr(gjmi) else begin /處理沖突 k:=j; while ed2k.text-1 do k:=(k+1) mod pub; ed2k
8、.text:=inttostr(gjmi); end; end;end;procedure TForm1.Button3Click(Sender: TObject);/查找var i,j,k,n:integer;begin i:=strtoint(edit1.text); j:=i mod pub; if i=strtoint(ed2j.text) then label3.caption:=inttostr(j+1) mod pub) else begin n:=1;k:=j; while(istrtoint(ed2k.text)and(n=pub then showmessage(該關(guān)鍵碼不存在) else label3.c
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度投資理財(cái)代理服務(wù)合同
- 二零二五年度吊車安全操作規(guī)程制定及執(zhí)行合同
- 二零二五年度冬季勞務(wù)掃雪環(huán)境保護(hù)協(xié)議
- 2025年度正規(guī)貨車駕駛員勞動(dòng)合同及貨運(yùn)業(yè)務(wù)操作規(guī)范合同
- 二零二五年度扶貧項(xiàng)目風(fēng)險(xiǎn)防范與應(yīng)急處理合作協(xié)議
- 二零二五年度合同糾紛賠償調(diào)解服務(wù)協(xié)議
- 二零二五年度名人房產(chǎn)銷售代理合同范本
- 2025年度智能制造股權(quán)抵押貸款合同
- 2025年度電子商務(wù)平臺(tái)合作解除終止范本
- 二零二五年度企業(yè)勞動(dòng)合同解除與離職員工就業(yè)援助服務(wù)協(xié)議
- 2025年黑龍江交通職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)必考題
- 個(gè)人畫協(xié)議合同范本
- 2024-2025學(xué)年高一下學(xué)期開(kāi)學(xué)第一節(jié)課(哪吒精神)主題班會(huì)課件
- 人教版2025-初中物理實(shí)驗(yàn)室實(shí)驗(yàn)課程安排
- 2024年無(wú)錫科技職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 舞蹈藝術(shù)賞析課件
- 2025江蘇泰州興化市陳堡鎮(zhèn)村級(jí)后備干部招聘10人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 重慶市2025屆高三第一次學(xué)業(yè)質(zhì)量調(diào)研抽測(cè)化學(xué)試題 (含答案)
- 隔物灸課件:2025年版
- 室外廣告安全生產(chǎn)培訓(xùn)
- 2025中冶建工集團(tuán)限公司校園招聘114人高頻重點(diǎn)提升(共500題)附帶答案詳解
評(píng)論
0/150
提交評(píng)論