哈希表
#include <stdio.h>
#include "stdlib.h"
#define HASHSIZE 12 /*定义哈希表长为数组的长度*/
#define NULLKEY -32768
// 定义哈希表 (使用的是动态数组来进行保存)
typedef struct HashTable {
int len;
int *elem;
}HashTable;
// 初始化哈希表
int initHashTable(HashTable *hashTable) {
hashTable->len = HASHSIZE;
hashTable->elem = (int *)malloc(HASHSIZE *sizeof(int));
for (int i = 0; i < HASHSIZE; ++i) {
hashTable->elem[i] = NULLKEY;
}
return 1;
}
// 定义哈希函数
int Hash(int key) {
return key % HASHSIZE;
}
// 插入操作
void insertHashTable(HashTable *hashTable, int key) {
int addr = Hash(key);
while (hashTable->elem[addr] != NULLKEY){ // 出现冲突
// 使用开放定址法,查看下一个是否冲突
addr = (addr + 1) % HASHSIZE;
}
hashTable->elem[addr] = key;
}
// 查询操作
int queryHashTable(HashTable *hashTable, int key) {
int addr = Hash(key);
while (hashTable