



全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Hash沖突并統(tǒng)計關(guān)鍵字的頻率數(shù)據(jù)結(jié)構(gòu)實驗報告一、 問題掃描一個C源程序,用Hash表存儲該程序中出現(xiàn)的關(guān)鍵字,并統(tǒng)計該程序中的關(guān)鍵字出現(xiàn)頻度。用線性探測法解決Hash沖突。設(shè)Hash函數(shù)為:Hash(key)=(key的第一個字母序號)*100+(key的最后一個字母序號) MOD 41二、 算法思想描述.c文件提取單詞查找統(tǒng)計顯示1. 總體思路圖1 總體思路2. 細節(jié)描述(1) 創(chuàng)建Hash表所有的關(guān)鍵字已經(jīng)寫入了名為guanjianzi.txt的文件中,通過提取單詞,將所有的關(guān)鍵字插入Hash表中。本程序采用開放地址法解決Hash沖突。關(guān)鍵字共有32個:char, double, enum, float, int, long, short, signed, struct, union, unsigned, void, break, case, continue, default, do, else, for, goto, if, return, switch, while, auto, extern, register, static, const, sizeof, typedef, volatile(2) 掃描某C文件在a.c文件中提取出單詞,判斷是否為關(guān)鍵字,若是則統(tǒng)計加一,直至文件結(jié)束。提取單詞:根據(jù)單詞都是由連在一起的字母組成這一原理,用語句while( (cz) & (c!=EOF) ) c=fgetc(ft); 跳過非字母的字符。當讀到字母時,用while( c=a & c=z )st.chi=c;c=fgetc(ft);i+;將所有連在一起的字母存在st.ch數(shù)組中,在進行下一步操作。在提取單詞時,為了實現(xiàn)在注釋內(nèi)的關(guān)鍵字不計,用以下代碼實現(xiàn):if(c=/) c=fgetc(ft);if(c=/) / /后的不計doc=fgetc(ft);while(c!=10);if(c=*)doc=fgetc(ft);if(c=*) / /* */后的不計c=fgetc(ft);if(c=/)break;else continue;while(1);(3) 顯示Hash表通過循環(huán)顯示出a.c文件中所包含的關(guān)鍵字,及其哈希地址和出現(xiàn)頻度。輸出時過濾沒有出現(xiàn)的(頻度為0)的關(guān)鍵字。3. 流程圖判斷是否為關(guān)鍵字SearchHash(.)Y統(tǒng)計加1 開 始讀文件guanjianzi.txt文件是否結(jié)尾N 提取關(guān)鍵字單詞插入關(guān)鍵字至Hash表InsertHash(.)掃描a.c文件文件是否結(jié)尾YNY提取單詞N輸出Hash表結(jié) 束Create()Scan()PrintHash()main()圖2 流程圖三、 程序結(jié)構(gòu)1. 數(shù)據(jù)結(jié)構(gòu)typedef struct char ch10; /關(guān)鍵字int num; /該關(guān)鍵字出現(xiàn)次數(shù)HSTable;HSTable HTMAXSIZE;HT 為一維數(shù)組表示的哈希表。2. 函數(shù)調(diào)用層次結(jié)構(gòu)main函數(shù)Create函數(shù)Scan函數(shù)PrintHash函數(shù)InsertHash函數(shù)SearchHash函數(shù)調(diào)用調(diào)用調(diào)用調(diào)用調(diào)用調(diào)用H函數(shù)(求Hash地址)調(diào)用圖3 函數(shù)調(diào)用層次結(jié)構(gòu)3. 函數(shù)功能說明Create函數(shù):創(chuàng)建Hash表Scan函數(shù):掃描某文件,統(tǒng)計其中各關(guān)鍵字出現(xiàn)次數(shù)PrintHash函數(shù):顯示Hash表InsertHash函數(shù):將一個單詞作為關(guān)鍵字插入Hash表中SearchHash函數(shù):在Hash表中查找是否包含某個單詞,即查找該單詞是否為關(guān)鍵字。H函數(shù):計算某單詞的Hash地址。依據(jù)函數(shù)Hash(key)=(key的第一個字母序號)*100+(key的最后一個字母序號) MOD 41四、 測試結(jié)果與分析上述程序在Visual C+ 6.0環(huán)境下加以實現(xiàn)。經(jīng)過多次測試,程序運行正確。例如:輸入C程序 a.c,運行結(jié)果如圖4所示,圖中顯示了文件a.c所包含的關(guān)鍵字及其個數(shù)。圖4 運行結(jié)果五、 收獲與體會通過這次課程設(shè)計:1. 我又進一步鞏固了C語言的基礎(chǔ),尤其是文件那部分。2. 通過程序加深了對Hash查找方面知識的認識。更深一層次了解了Hash查找的優(yōu)缺點。3. 做課程設(shè)計達
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技園區(qū)場地租賃分成及人才引進合同
- 草場租賃與草原生態(tài)補償及資源保護合同
- 清算還款協(xié)議書范本
- 建筑工程測量員專業(yè)服務(wù)協(xié)議
- 出租車乘客安全保障合同協(xié)議書
- 花藝沙龍培訓
- 2024年“工會杯”職工技能競賽化學檢驗員賽項理論考試題庫(濃縮500題)
- 高三化學一輪復(fù)習 訓練題-物質(zhì)結(jié)構(gòu)與性質(zhì)
- 工廠成本方面培訓
- 植物護理幼兒園
- 執(zhí)業(yè)藥師 中藥一筆記
- 新科hg5300功放說明書
- 2023-2024學年湖南省常德市小學語文六年級期末評估試卷附參考答案和詳細解析
- 華北理工環(huán)境監(jiān)測教案02水和廢水監(jiān)測-4金屬化合物-鋁、汞、鎘、鉛、銅、鋅、鉻、砷等測定
- 氣污染源自動監(jiān)控設(shè)施臺賬記錄模版校準記錄
- JJF 1169-2007汽車制動操縱力計校準規(guī)范
- 新高考高中物理競賽專題1力學50題競賽真題強化訓練原卷版
- 2023年成都市成華發(fā)展集團有限責任公司招聘筆試模擬試題及答案解析
- 曬紋資料大全
- 山東省泰安市2021-2022學年高一下學期期末考試數(shù)學試題(Word版含答案)
- ××團支部換屆選舉選票
評論
0/150
提交評論