哈希表,也叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。
哈希函数最主要的设计在于哈希函数和冲突处理的解决,其中哈希函数的设计方法主要有直接定址法和除留余数法;冲突处理的方法主要有开放定址法和链地址法。本文主要实现了一个基本存放字符串的哈希表,冲突处理采用链地址法。
代码如下:
#include <iostream>
#include<cstring>
#define HASHSIZE 19
using namespace std;
struct hashnode{
char *key;
char *value;
hashnode *next;
};
char *strcopy(char *s)
{
int len=strlen(s)+1;
char *res=new char[len];
strcpy(res,s);
if(res==NULL)
return NULL;
return res;
}
class hashtable
{
public:
h