#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
using namespace std;
char *key[32]= {"auto","break","case","char","const",
"continue","default","do","double",
"else","enum","extern",
"float","for","goto","if","int","long",
"register", "return", "short",
"signed","sizeof","static", "struct","switch",
"typedef","union","unsigned",
"void","volatile","while"
};
int index[32];
char *HASH[253];
int hash(char *string)
{
int i=1;
int ix = 0;
for(; *string; string++)
{
ix =ix + i*(*string);
i++;
}
ix = ix%253;
return ix;
};
void create()
{
int i;
for(i=0; i<=252; i++)
{
HASH[i]="";
}
for(i=0; i<32; i++)
{
index[i] = hash(key[i]);
HASH[index[i]] = key[i];
}
}
int findkey(char * str)
{
if(strcmp(str,HASH[hash(str)])!=0)
return 0;
else
return 1;
};
int main()
{
cout<<"关键字的哈希值为:"<<endl;
int i;
for(i=0; i<32; i++)
{
cout<<hash(key[i])<<"\t";
if(i!=0&&i%5==0)
cout<<endl;
}
cout<<endl;
char string[20]= {0};
create();
int choice;
cout<<"请输入你的选择:1,查找关键字;,-1退出查找:"<<endl;
cin>>choice;
while(choice!=-1)
{
if(choice == 1)
{
cout<<"请输入你要查找的关键字:"<<endl;
cin>>string;
if(findkey(string))
cout<<"你所输入的字符串是关键字"<<endl;
else
{
cout<<"你所输入的字符串不是关键字"<<endl;
cout<<"请输入你的选择:1,查找关键字;,退出查找:"<<endl;
}
}
cin>>choice;
}
return 0;
}
hash函数
最新推荐文章于 2014-10-30 20:32:52 发布