下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、-. z課程實驗報告課程名稱:數(shù)據(jù)構(gòu)造實驗工程名稱:散列表專業(yè)班級:*: * *:完成時間: 2015 年 06 月 13 日背景散列表Hash table,也叫哈希表,是根據(jù)關(guān)鍵碼值(Key value)而直接進展的數(shù)據(jù)構(gòu)造。也就是說,它通過把關(guān)鍵碼值映射到表中一個位置來記錄,以加快查找的速度。這個映射函數(shù)叫做散列函數(shù),存放記錄的數(shù)組叫做散列表。在理想情況下,查找、插入、刪除操作的時間均為O(1),是一種高效的動態(tài)集合構(gòu)造。例1:計算機程序設(shè)計語言的編譯程序需要維護一個符號表,其中元素的關(guān)鍵值為任意字符串,與語言中的標(biāo)識符對應(yīng)。該符號表常采用散列表。例2:為了節(jié)約空間,常常需要把文本文件采用
2、壓縮編碼方式存儲。LZW是對文本文件進展壓縮和解壓縮的方法之一,該方法采用了散列。問題描述我們希望在浩瀚的圖書中,去發(fā)現(xiàn)一本書是否存在。我們不知道書的編號,只知道它的書名。其實這已經(jīng)不錯了.。通過書名,來查詢它是否存在。為了簡化問題,我們假設(shè)每本書的書名都是一組小寫字母組成,長度不超過100字符。根本要求根據(jù)輸入建立圖書名稱表,采用散列表實現(xiàn)該表,散列函數(shù)選用BKDE 字符串哈希。2數(shù)據(jù)的輸入輸出格式:輸入分為兩局部第一局部,第一行是行數(shù)n,n = 5000。余下n行,每行一個字符串。表示已存在的圖書記錄。第二局部,第一行是行數(shù)m,m = 1000。余下m行,每行一個字符串。表示要查詢的圖書記
3、錄。輸出:輸出為m行,如果被查的記錄存在,則輸出YES,如果不存在則輸出NO。測試數(shù)據(jù)輸入:4aansandhellocpp9abanasansandandehellocbbhellocpp輸出:YESNONONOYESYESNONOYES實現(xiàn)提示1沖突處理方法為:順次循環(huán)后移到下一個位置,尋找空位插入。2BKDE 字符串哈希unsigned int hash_BKDE(char *str) /* 初始種子 seed 可取31 131 1313 13131 131313 etc. */ unsigned int seed = 131;unsigned int hash = 0;while (*
4、str)hash = hash * seed + (*str+);return (hash & 0*7FFFFFFF);將字符串哈希到小于231的整數(shù) t,再將t用隨機數(shù)哈希法映射到 215以的數(shù)。選做容每一種西文圖書都有一個國際標(biāo)準(zhǔn)圖書編號,它是一個10位的十進制數(shù)字,假設(shè)要以它作關(guān)鍵字建立一個哈希表,當(dāng)館藏書種類不到10,000時,采用折疊法構(gòu)造一個四位數(shù)的哈希函數(shù)。課后題目實現(xiàn)文本LZW壓縮和解壓縮。源代碼#include#include#include using namespace std;unsigned int hash_BKDE(char *str) unsigned int
5、seed = 131; unsigned int hash = 0; while (*str) hash = hash * seed + (*str+); return (hash & 0*7FFFFFFF); double k=(double)(rand()%999)/1000;unsigned int hash_rand(unsigned int value) double a=k*value; double n=(a-(int)a)*64; unsigned int seed=(int)n; return seed; unsigned int Hash(char*str) return
6、hash_rand(hash_BKDE(str); class HashTablepublic: HashTable(); HashTable(); void insert(char*c); bool find(char*c);private: char*Arr; int ArrSize;HashTable:HashTable() ArrSize=32768; Arr=new char*64; for(int i=0;i64;i+) Arri=new char100; Arri=NULL; HashTable:HashTable() for(int i=0;i64;i+) deleteArri
7、; delete Arr; void HashTable:insert(char*c) unsigned int pos=Hash(c); while(Arrpos!=NULL) pos=(pos+1); Arrpos=c; bool HashTable:find(char*c) unsigned int pos=Hash(c); while(Arrpos!=NULL) if(Arrpos=c)return true; pos=(pos+1); return false; int main() bool a20; char *c1=new char100; HashTable H; coutn; cout輸入n個字符串:n; for(int i=1;ic1; H.insert(c1); coutm; cout輸入要查找的字符串:endl; for(int j=0;jc1; aj=H.find(c1); cout查找結(jié)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB35T 2226-2024村(居)便民幫代辦服務(wù)規(guī)范
- 事業(yè)單位勞動合同管理指導(dǎo)意見
- 產(chǎn)業(yè)升級融資合同
- 業(yè)務(wù)代表雇傭合同
- 二手房合同解除關(guān)鍵條款解析
- 親屬間房屋贈與合同模板
- OEM合作模式銷售合同
- 2025版智能制造裝備采購與技術(shù)服務(wù)合同
- 個人與企業(yè)的借款合同樣本
- 交通事故雙方合同調(diào)解協(xié)議1
- 2025年熱管換熱氣行業(yè)深度研究分析報告
- 2025年陜西西安市經(jīng)濟技術(shù)開發(fā)區(qū)管委會招聘30人歷年高頻重點提升(共500題)附帶答案詳解
- 2025山東能源集團中級人才庫選拔高頻重點提升(共500題)附帶答案詳解
- 【可行性報告】2024年數(shù)據(jù)標(biāo)注與審核項目可行性研究分析報告
- 2024-2025學(xué)年滬科版數(shù)學(xué)七年級上冊期末綜合測試卷(一)(含答案)
- 2025門診護理工作計劃
- 《針法灸法》課件-溫灸器灸
- 電氣領(lǐng)域知識培訓(xùn)課件
- 山東省部分學(xué)校2024-2025學(xué)年高一上學(xué)期12月選科指導(dǎo)聯(lián)合測試地理試題( 含答案)
- 運動技能學(xué)習(xí)中的追加反饋
- 《淄博張店區(qū)停車問題治理現(xiàn)狀及優(yōu)化對策分析【開題報告+正文】15000字 》
評論
0/150
提交評論