建立雜湊表 查詢及計算平均查詢長度

2021-08-21 07:00:55 字數 1569 閱讀 8961

#include#include#includetypedef struct		//元素型別定義

datatype;

typedef struct //雜湊表型別定義

hashtable;

void createhashtable(hashtable *h,int m,int p,int hash,int n);

int searchhash(hashtable h,int k);

void hashasl(hashtable h,int m);

void displayhash(hashtable h,int m);

int main()

hashtable h;

int m,p,n,pos,v;

printf("請輸入雜湊表的長度,mod及元素個數:\n");

scanf("%d%d%d",&m,&p,&n);

createhashtable(&h,m,p,hash,n);

displayhash(h,m);

printf("請輸入待查詢的元素:\n");

scanf("%d",&v);

pos=searchhash(h,v);

printf("元素%d在雜湊表中的位置:%d\n",v,pos);

hashasl(h,m);

}//構造雜湊表,並處理衝突

void createhashtable(hashtable *h,int m,int p,int hash,int n)

//構造雜湊表並處理衝突

for(i=0;ielse //用線性探測再雜湊法處理衝突

while((*h).data[di].value!=-1);

(*h).data[di].value=hash[i];

(*h).data[di].hi=sum+1;

} }}int searchhash(hashtable h,int v)

//在雜湊表h中查詢值為v的元素

return 0; //該位置不存在元素v

}//求雜湊表的平均查詢長度

void hashasl(hashtable h,int m)

//輸出雜湊表

void displayhash(hashtable h,int m)

請輸入資料個數:

8請輸入資料:

23 12 14 56 456 27 78 98

請輸入雜湊表的長度,mod及元素個數:

20 7 8

元素值value: 14   56   23   456  78   12   27   98   -1   -1   -1   -1   -1   -1   -1   -1   -1   -1   -1   -1

衝突次數:    1    2    1    3    4    1    1    8    0    0    0    0    0    0    0    0    0    0    0    0

請輸入待查詢的元素:

14元素14在雜湊表中的位置:0

平均查詢長度asl:2.63

雜湊表查詢 的 平均長度

將關鍵字序列 7 8 30 11 18 9 14 雜湊儲存到雜湊表中。雜湊表的儲存空間是乙個下標從0開始的一維陣列。雜湊函式為 h key key 3 mod 7,處理衝突採用線性探測再雜湊法,要求裝填 載 因子為0.7。1 請畫出所構造的雜湊表 2 分別計算等概率情況下查詢成功和查詢不成功的平均查...

雜湊查詢(雜湊表建立及平方探測)

編譯處理時,涉及變數及屬性的管理 插入 新變數的定義 查詢 變數的引用 順序查詢 o n 二分查詢 o logn 二叉樹查詢o h 平衡二叉樹 o logn 如何快速查詢?查詢的本質 已知物件找位置 有序的安排物件 全序 順序查詢 半序 二叉樹 直接算出位置 雜湊查詢 雜湊查詢 1.計算位置。2.解...

查詢 雜湊表查詢(雜湊表)

1 雜湊表查詢定義 雜湊技術是在記錄的儲存位置和它的關鍵字之間建立乙個確定的對應關係f,使得每個關鍵字key對應乙個儲存位置f key 查詢時,根據這個確定的對應關係找到給定值key的對映f key 若查詢集合中存在這個記錄,則必定在f key 的位置上。採用雜湊技術將記錄儲存在一塊連續的儲存空間中...