閉散列表的查找、插入和刪除操作的完整C代碼
/*閉散列表的建立、查找、插入、刪除*/
#include
#define NIL -1 //假設關鍵字為非負整數
#define DEL -2
typedef int KeyType;
KeyType HashTable[13]; //便於驗證算法,關鍵字個數假定為不超過13,哈希表長定為13
//關鍵字插入函數
void InsertHashTable(KeyType k)
{
for(int i=0; i<13; i++)
if( NIL == HashTable[(k%13+i)%13] || DEL == HashTable[(k%13+i)%13] ) {
HashTable[(k%13+i)%13] = k;
break;
}
}
//哈希表的查找操作,查找成功則返回下表,否則返回-1
int HashSearch(KeyType k)
{
int i = 0;
while( i<13 ) {
if( k == HashTable[((k%13)+i)%13] )
return ((k%13)+i)%13;
else if( NIL == HashTable[((k%13)+i)%13] )
return -1;
i++;
}
if( 13 == i )
return -1;
}
//創建哈希表
void CreateHashTable()
{
int n;
KeyType key;
for(int i=0; i<13; i++)
HashTable[i] = NIL;
printf("請輸入關鍵字的個數:\n");
scanf("%d", &n);
printf("請輸入%d個關鍵字的值:\n", n);
for(i=0; i