PTA 函式題 線性探測法的查詢函式(C語言)

2021-10-10 20:48:14 字數 2212 閱讀 9224

試實現線性探測法的查詢函式。

函式介面定義:

position find

( hashtable h, elementtype key )

;

#define maxtablesize 100000  

/* 允許開闢的最大雜湊表長度 */

typedef

int elementtype;

typedef

int index;

/* 雜湊位址型別 */

typedef index position;

/* 資料所在位置與雜湊位址是同一型別 */

/* 雜湊單元狀態型別,分別對應:有合法元素、空單元、有已刪除元素 */

typedef

enum

entrytype;

typedef

struct hashentry cell;

/* 雜湊表單元型別 */

struct hashentry

;typedef

struct tblnode *hashtable;

/* 雜湊表型別 */

struct tblnode

;

函式find應根據裁判定義的雜湊函式hash( key, h->tablesize )從雜湊表h中查到key的位置並返回。如果key不存在,則返回線性探測法找到的第乙個空單元的位置;若沒有空單元,則返回error。

裁判測試程式樣例:

#include

#define maxtablesize 100000

/* 允許開闢的最大雜湊表長度 */

typedef

int elementtype;

typedef

int index;

/* 雜湊位址型別 */

typedef index position;

/* 資料所在位置與雜湊位址是同一型別 */

/* 雜湊單元狀態型別,分別對應:有合法元素、空單元、有已刪除元素 */

typedef

enum

entrytype;

typedef

struct hashentry cell;

/* 雜湊表單元型別 */

struct hashentry

;typedef

struct tblnode *hashtable;

/* 雜湊表型別 */

struct tblnode

;hashtable buildtable()

;/* 裁判實現,細節不表 */

position hash

( elementtype key,

int tablesize )

#define error -1

position find

( hashtable h, elementtype key )

;int

main()

/* 你的**將被嵌在這裡 */

輸入樣例1:(注:-1表示該位置為空。下同。)

11

118821-

1-15

167638

1038

輸出樣例1:

38 is at position 9.
輸入樣例2:

11

118821-

1-15

167638

1041

輸出樣例2:

41 is not found.  position 3 is returned.
輸入樣例3:

11

1188213

145167

6381041

輸出樣例3:

error:

41 is not found and the table is full.

position find

( hashtable h, elementtype key )

p=(p0+cnum)

%h->tablesize;

}return p;

}

線性探測 Hash表的建立 查詢

time limit 1000ms memory limit 65536kb submit statistic discuss problem description 根據給定的一系列整數關鍵字和素數p,用除留餘數法定義hash函式h key key p,將關鍵字對映到長度為p的雜湊表中,用線性探測...

資料結構 查詢 雜湊表的線性探測已經拉鍊法的查詢

直接定址法 一般沒啥用,消耗空間太大了 除留餘數法 一般來說是除以質數,因為質數只有本身和1才可除,這樣分布比較均勻,衝突率小 這種方法比較easy也比較常用 數字分析法 僅僅對那種資料量具有明顯區分特徵的才管用,並且要先知道有哪些數值,通常情況下資料是隨機分布的 平方取中法 對關鍵碼平方後取中間幾...

關於解決Hash衝突的線性探測開放位址法和拉鍊法

在實際應用中,無論如何構造雜湊函式,衝突是無法完全避免的。鏈位址法解決衝突的做法是 如果雜湊表空間為 0 m 1 設定乙個由 m 個指標分量組成的一維陣列 st m 凡雜湊位址為 i 的資料元素都插入到頭指標為 st i 的鍊錶中。這種方法有點近似於鄰接表的基本思想,且這種方法適合於衝突比較嚴重的情...