/*
煙台大學計算機學院
檔名稱:1.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;
}
執行結果:
學習心得:
學會了雜湊表的應用。
第十四周專案一
煙台大學計算機學院 問題描述 認真閱讀並驗證雜湊表實施查詢的相關演算法,寫程式建立序列的雜湊表,裝填因子定為0.8,雜湊函式為h k key p,p 11,採用線性探查法解決衝突。測試中 1 輸出建立的雜湊表 2 完成關鍵字為29的元素的查詢 3 在上述雜湊表中刪除關鍵字為77的元素,再顯示雜湊表。...
第十四周專案三
問題及 all right reserved.檔名稱 是否二叉排序樹.cpp 版本號 v1.0 問題描述 設計乙個演算法,判斷給定的二叉樹是否是二叉排序樹。輸入描述 用二叉樹的形式輸入數字 程式輸出 判斷結果 include include define maxsize 100 typedef in...
第十四周 專案1(2)
問題描述及 ifndef btree h included define btree h included 煙台大學計控學院 作 者 王力源 完成日期 2016年12月8日 問題描述 請用 共n 25據,每塊資料個數s 5作為資料表,自行構造索引表,分別對查詢85測試。endif btree h i...