



全文預(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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家長如何應(yīng)對孩子的網(wǎng)絡(luò)欺凌問題論文
- 小學(xué)課間文明行為養(yǎng)成與德育課程整合研究論文
- 中國醫(yī)藥用酒石酸行業(yè)市場前景預(yù)測及投資價值評估分析報告
- 節(jié)假日工地管理制度
- 茶藝師培訓(xùn)管理制度
- 認知自動化在商務(wù)服務(wù)中
- 評估美國的醫(yī)保體系
- 《一年級下冊語文園地二》課件
- 李踐有效提升銷售的12大黃金法則1541497991
- 財會教材大全
- JJF 1169-2007汽車制動操縱力計校準規(guī)范
- GB/Z 37839-2019包含GB/T 5094.1、GB/T 5094.2、GB/T 16679、GB/T 18656和GB/T 16901.3內(nèi)容的信息模型
- GB/T 34932-2017分布式光伏發(fā)電系統(tǒng)遠程監(jiān)控技術(shù)規(guī)范
- 2022年石家莊水務(wù)投資集團有限責(zé)任公司招聘筆試試題及答案解析
- 曬紋資料大全
- 《硅酸鹽物理化學(xué)》word版
- 羽毛球社團教案(共17頁)
- 下肢靜脈曲張診斷及治療進展PPT學(xué)習(xí)教案
- 化工企業(yè)41條禁令
- 2019-2020學(xué)年北京市海淀區(qū)上地實驗小學(xué)北師大版四年級下冊期末考試數(shù)學(xué)試卷
- 裝修管理規(guī)則-城市綜合體---成都租戶指引
評論
0/150
提交評論