链表法哈希表
#include <stdio.h>
#include <stdlib.h>
#define m 11
enum {NONEXIST,EMPTY,FOUND};
typedef int Status;
typedef struct Node
{
int key;
struct Node *next;
}LNode,*NodeP;
typedef struct
{
LNode *H[m];
int num;
}HashTable;
int Hash(int k);
Status SearchHash(HashTable T,int k,int *p,LNode *q);
void InsertHash(HashTable *T,int e);
int main()
{
HashTable T;
int i;
for(i=0;i<m;i++)
T.H[i]=NULL;
T.num=0;
int e;
printf("Input the numbers to create the HashTable:");
scanf("%d",&e);
while(e)
{
InsertHash(&T,e);
printf("Input the numbers to create the HashTable--0 to quit:");
scanf("%d",&e);
}
return 0;
}
int Hash(int k)
{
return k%m;
}
Status SearchHash(HashTable T,int k,int *p,NodeP *q)
{
*p=Hash(k);
*q=T.H[*p];
if(T.num)
{
int j=*p;
if(!*q)
return EMPTY;