已知哈希表長度為11,哈希函數為H(key)=key%11,隨機產生待散列的小于50的8個元素,同時采用線性探測再散列的方法處理沖突。任意輸入要查找的數據,無論是否找到均給出提示信息。
?
int func(int value)
{
return value % Max; /哈希函數?/
}
?
int search(int key) /自定義函數實現哈希查找?/
{
int pos, t;
pos = func(key); /哈希函數確定位置?/
t = pos; /t 存放確定出的位置?/
while (hashtable[t] != key && hashtable[t] != - 1)/如果該位置不等于要查找的關鍵字且不為空?/
{
t = (t + 1) % Max; /利用線性探測求出下一個位置?/
if (pos == t)
/如果經多次探測又回到原來用哈希函數求出的位置,則說明要查找的數不存在?/
return - 1;
}
if (hashtable[t] == - 1) /如果探測的位置是-1,則說明要查找的數不存在?/
return NULL;
else
return t;
}
?
void creathash(int key) /自定義函數創建哈希表?/
{
int pos, t;
pos = func(key); /哈希函數確定元素的位置?/
t = pos;
while (hashtable[t] != - 1) /如果該位置有元素存在,則進行線性探測再散列?/
{
t = (t + 1) % Max;
if (pos == t)
/如果沖突處理后確定的位置與原位置相同,則說明哈希表已滿?/
{
printf("哈希表已滿\n");
return ;
}
}
hashtable[t] = key; /將元素放入確定的位置?/
}