1:問題描述
針對某個集體(比如你所在的班級)中的「人名」設計乙個雜湊表,使得平均查詢長度不超過r,完成相應的建表和查表程式。
2:基本要求
假設人名為中國人姓名的漢語拼音形式。待填入雜湊表的人名共有30個,取平均查詢長度的上限為2。雜湊函式用除留餘數法構造,用偽隨機探測再雜湊發處理衝突。
3:資料結構設計
4:主要演算法設計#ifndef _hashtest_h_
#define _hashtest_h_
#define name_no 30
#define hash_length 50
#define m 50;
typedef struct
name;
typedef struct //雜湊表
hash;
#endif
(1)姓名(結構體陣列)初始化
名字以拼音的形式夠成字串,將字串的各個字元所對應的ascii碼相加,所得的整數做為雜湊表的關鍵字。
(4)顯示雜湊表void initnamelist()
; int s0=0,r,sum=1,adr,d;
printf("請輸入姓名的拼音:");
scanf("%s",name);
for(r=0;r<20;r++) //求出姓名的拼音所對應的整數(關鍵字)
s0+=name[r];
adr=s0%m; //使用雜湊函式
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
if(hashlist[d].k==s0)
}while(g==0);
} }
void display()
for(i=0;i(5)主函式
void main()
while(ch1!='n');
}
雜湊表(雜湊表)應用例項,同時借助最小堆
1.介紹 陣列的特點是 定址容易,插入和刪除困難 而鍊錶的特點是 定址困難,插入和刪除容易。這個世界上有沒有一種能夠綜合兩者優點的,既定址容易又插入和刪除容易的資料結構?yes,它就是hash表。2.雜湊雜湊方法 1 除留取餘法 2 平方雜湊法 3 fibonacci雜湊法 3.雜湊表使用範圍 快速...
雜湊表應用
本文 雜湊表的應用 c 實現 問題描述 設計雜湊表實現 號碼查詢系統,實現下列功能 1 假定每個記錄有下列資料項 號碼 使用者名稱 位址。2 一是從資料檔案old.txt 自己現行建好 中讀入各項記錄,二是由系統隨機產生各記錄,並且把記錄儲存到new.txt檔案中以及顯示到螢幕上,記錄條數不要少於3...
雜湊表應用
以下 用開雜湊裡的拉鍊法解決雜湊衝突 include include using namespace std define hashsize 3 struct movietype struct node class hashtable hashtable hashtable hashtable ha...