/*
煙台大學計算機學院
檔名稱:xiangmu.cpp
完成日期:2023年12月19日
問題描述:認真閱讀並驗證雜湊表實施查詢的相關演算法,寫程式建立序列的雜湊表,
裝填因子定為0.8,雜湊函式為h(k)=key%p,p=11,採用線性探查法解決衝突。測試中:
(1)輸出建立的雜湊表;
(2)完成關鍵字為29的元素的查詢;
(3)在上述雜湊表中刪除關鍵字為77的元素,再顯示雜湊表。
輸入描述:無
輸出描述:處理後的雜湊表
%m改過後
*/#include
#define maxsize 100 //定義最大雜湊表長度
#define nullkey -1 //定義空關鍵字值
#define delkey -2 //定義被刪關鍵字值
typedef
intkeytype;
//關鍵字型別
typedef
char
* infotype;
//其他資料型別
typedef
struct
hashdata;
typedef
hashdata hashtable[maxsize];
//雜湊表型別
void
insertht(hashtable ha,
int&n,
intm,keytype k,
intp)
//將關鍵字k插入到雜湊表中
else
//發生衝突時採用線性探查法解決衝突
while
(ha[adr].key!=nullkey && ha[adr].key!=delkey);
ha[adr].key=k;
ha[adr].count=i;
} n++;
} void
createht(hashtable ha,keytype x,
intn,
intm,
intp)
//建立雜湊表
for(i=0; i
insertht(ha,n1,m,x[i],p);
} int
searchht(hashtable ha,
intp,
intm,keytype k)
//在雜湊表中查詢關鍵字k
if(ha[adr].key==k)
//查詢成功
return
adr;
else
//查詢失敗
return
-1;
} int
deleteht(hashtable ha,
intp,
intk,
int&n,
intm)
//刪除雜湊表中關鍵字k
else
//在雜湊表中未找到該關鍵字
return
0;
} void
dispht(hashtable ha,
intn,
intm)
//輸出雜湊表
intmain()
; int
n=11,m=13,p=13,i,k=29;
hashtable ha;
createht(ha,x,n,m,p);
printf("\n"
);
dispht(ha,n,m);
i=searchht(ha,p,m,k);
if(i!=-1)
printf(" ha[%d].key=%d\n"
,i,k);
else
printf(" 未找到%d\n"
,k);
k=77;
printf(" 刪除關鍵字%d\n"
,k);
deleteht(ha,p,k,n,m);
dispht(ha,n,m);
i=searchht(ha,p,m,k);
if(i!=-1)
printf(" ha[%d].key=%d\n"
,i,k);
else
printf(" 未找到%d\n"
,k);
printf(" 插入關鍵字%d\n"
,k);
insertht(ha,n,m,k,p);
dispht(ha,n,m);
printf("\n"
);
return
0;
}
執行結果:
第14周 專案1 1 驗證演算法
輸入描述 1.折半查詢 include define maxl 100 typedef int keytype typedef char infotype 10 typedef struct nodetype typedef nodetype seqlist maxl 順序表型別 int binse...
第14周專案1 1 驗證演算法
檔名稱 專案1 驗證演算法 作 者 zangyunpeng 完成日期 2017年11月30日 版 本 號 v1.0 問題 折半查詢,遞迴的折半查詢演算法的驗證。折半查詢 include define maxl 100 typedef int keytype typedef char infotype...
第14周專案1 (1)驗證折半演算法
問題及 檔名稱 1.cpp 作 者 王修文 完成日期 2016年12月1日 版 本 號 v1.0 輸入描述 無 程式輸出 測試資料 1.折半查詢 include define maxl 100 typedef int keytype typedef char infotype 10 typedef ...