第一篇:《哈希表》項目實驗報告[范文]
《哈希表》項目實驗報告
1、實驗名稱
哈希表問題
2、小組成員
劉艷寧、鄧芳益;
3、主要內容和步驟:
(1)分析問題描述,明確問題目標
對于一個哈希表,它是通過哈希算法,然后將數據按照哈希算法所得到的哈希地址存入到哈希表中。所以對于一個哈希表,要了解它的存儲方式、哈希表的沖突處理、數據的輸入、數據的追加、哈希表的判空、哈希表清空、數據的查找(2)分析問題數據描述
[數據描述]首先分析哈希表的構造方法:除留余數法
取關鍵字被某個不大于哈希表表長m的數p除后所得余數為哈希地址。H(key)=key MOD p(p<=m);//哈希表的存儲方法
但是由于java中已經嵌入了哈希表,所以直接調用java中的哈希表: Import java.uilt.HashMap//調用java中的哈希表函數;
(3)確定算法思路,準確描述算法 [算法描述]首先運用java里面的哈希表;
import java.util.Scanner;//調用java里面的Scanner供用戶進行數據的輸入 import java.util.HashMap;//調用java哈希表
根據公式:H(key)=key MOD p(p<=m)用輸入的關鍵字來與哈希表的總長度來進行求余運算,然后將求得的余數存入到哈希表相應的位置中
對于哈希表的查找:
則根據哈希表的除留余數法然后進行數據的查找;當ASL為1時時最理想的,因為只需要查找一次,如果第一次沒有查找到,則在先前的位置上加一進行查找,直到查找到數據為止然后返回。(4)運行數據記錄
輸入:學號:1000 姓名:張三 輸入:學號:1001 姓名:李四
輸出哈希表數據,然后進行判空,查找等操作(5)實驗效果圖示
4、實驗總結:(心得體會、處理結果、存在的問題、建議和意見等)
心得體會:如果要實現哈希表的各個操作,首先要了解哈希表的存儲方式;其次就是算法的構造上面,該程序是直接調用java中的hashmap,所以在算法上程序構造相對的比較簡單。
存在的問題:不能夠直觀的輸出哈希表的存儲方式。
第二篇:軟件綜合實習-哈希表
哈希表的設計實驗報告
1.實驗題目
針對自己班級體中的“人名”設計一個哈希表,使得平均查找長度不超過R,完成相應的建表和查表程序。
2.需求分析
假設人名為中國姓名的漢語拼音模式。待填入哈希表的人名共有30個,取平均查找長度的上限為2。哈希函數用除留余數法構造,用鏈表法處理沖突。測試數據:
①輸入的形式和輸入值的范圍:輸入30個人的姓名拼音,即30個字符串。
②輸出的形式:將結果輸出,程序自動計算查找長度的總數和平均查找長度,然后用戶可以根據需求進行查找操作。
③程序所能達到的功能:在哈希函數確定的前提下用各種不同處理沖突的方法,考察平均查找長度的變化和造好的哈希表中關鍵字的聚集性。
3.概要設計
#define HASH_LEN 50 //哈希表的長度 #define M 47 #define NAME_NO 30 //人名的個數 typedef struct NAME {char *py;//名字的拼音 int k;//拼音所對應的整數 }NAME;NAME NameList[HASH_LEN];typedef struct hterm //哈希表 {char *py;//名字的拼音 int k;//拼音所對應的整數 int si;//查找長度 }HASH;void InitNameList()void FindList()void Display()4.詳細設計
1{for(int i=0;i int s0=0;for(int r=0;r<20;r++)//求出姓名的拼音所對應的整數(關鍵字)s0+=name[r]; int sum=1;int adr=s0 % M;//使用哈希函數 int d=adr; if(HashList[adr].k==s0)//分3種情況進行判斷 printf(”n姓名:%s 關鍵字:%d 查找長度為: 1“,HashList[d].py,s0);else if(HashList[adr].k==0)printf(”無該記錄!“);else { int g=0;do { d=(d+s0%10+1)%M;//偽散列 sum=sum+1;if(HashList[d].k==0){ printf(”無記錄!“);g=1;} if(HashList[d].k==s0){ printf(”n姓名:%s 關鍵字:%d 查找長度為:%d“,HashList[d].py,s0,sum);g=1;} }while(g==0);} void main(){ InitNameList();CreateHashList();while(1){ printf(”nn“);printf(” 1.顯示哈希表n“);printf(” 2.查找n“);printf(” 3.退出n“);err: char ch1;scanf(”%c“,&ch1);if(ch1=='1')Display();else if(ch1=='2')FindList();else if(ch1=='3')return;else { printf(”n請輸入正確的選擇!“);goto err;} } } 5.調試分析 測試數據:隨機輸入的30個人的姓名拼音 測試過程:輸入30個人的姓名拼音,觀察輸出結果,并進行查找操作 測試結果: 6.使用說明 1)進入界面選擇1顯示哈希表,選擇2為查找,選擇3退出 2)再輸入名字查找,再退出 7.測試結果 8.附錄 #include int k;//拼音所對應的整數 }NAME;NAME NameList[HASH_LEN]; typedef struct hterm //哈希表 { char *py;//名字的拼音 int k;//拼音所對應的整數 int si;//查找長度 }HASH;HASH HashList[HASH_LEN];void InitNameList(){ NameList[0].py=”chenghongxiu“;NameList[1].py=”yuanhao“;NameList[2].py=”yangyang“;NameList[3].py=”zhanghen“;NameList[4].py=”chenghongxiu“;NameList[5].py=”xiaokai“;NameList[6].py=”liupeng“;NameList[7].py=”shenyonghai“;NameList[8].py=”chengdaoquan“;NameList[9].py=”ludaoqing“;NameList[10].py=”gongyunxiang“;NameList[11].py=”sunzhenxing“;NameList[12].py=”sunrongfei“;NameList[13].py=”sunminglong“;NameList[14].py=”zhanghao“;NameList[15].py=”tianmiao“;NameList[16].py=”yaojianzhong“;NameList[17].py=”yaojianqing“;NameList[18].py=”yaojianhua“;NameList[19].py=”yaohaifeng“;NameList[20].py=”chengyanhao“;NameList[21].py=”yaoqiufeng“;NameList[22].py=”qianpengcheng“;NameList[23].py=”yaohaifeng“;NameList[24].py=”bianyan“;NameList[25].py=”linglei“;NameList[26].py=”fuzhonghui“;NameList[27].py=”huanhaiyan“;NameList[28].py=”liudianqin“;NameList[29].py=”wangbinnian“;char *f;int r,s0;for(int i=0;i for(r=0;*(f+r)!= '
主站蜘蛛池模板:
久久久日韩精品一区二区三区|
四虎永久在线精品国产馆v视影院|
精品久久久久久久久久久国产字幕|
国产精品 亚洲一区二区三区|
在线观看老湿视频福利|
国产女人精品视频国产灰线|
国产精品成人影院久久久|
久久96国产精品久久|
亚洲成a人片在线观看无遮挡|
亚洲日本在线电影|
亚洲 精品 综合 精品 自拍|
亚洲成a人片在线不卡一二三区|
人妻在卧室被老板疯狂进入国产|
色哟哟在线视频精品一区|
亚洲精品久久久久久久久久吃药|
波多野结衣免费一区视频|
久久久久久久99精品免费观看|
手机看片久久国产免费|
久久夜色精品国产|
欧美大胆丰满熟妇xxbb|
精品乱码久久久久久中文字幕|
国产乱子伦农村叉叉叉|
成年无码av片在线|
久久精品人人做人人爽电影蜜月|
欧美精品黑人粗大|
一本一道vs无码中文字幕|
亚洲自偷自偷在线制服|
免费99精品国产自在现线|
亚洲国产超清无码专区|
亚洲日韩国产成网在线观看|
精品少妇人妻av免费久久洗澡|
国产成人乱码一二三区18|
巨胸喷奶水视频www免费网站|
久久精品一品道久久精品|
午夜福利影院私人爽爽|
97色偷偷色噜噜狠狠爱网站97|
亚洲 欧洲 日韩 综合在线|
亚洲综合av一区二区三区|
欧美乱妇高清无乱码免费|
丰满少妇高潮惨叫正在播放|
无码免费h成年动漫在线观看|