25年2月18号

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
enum{sucess,falout=-1};
typedef int datatype;
typedef struct hash
{
	datatype data;
	struct Node *next;
}*Hashlist;
Hashlist create_hash()
{
	Hashlist s=(Hashlist)malloc(sizeof(struct hash));
	if(NULL==s)
		return falout;
	s->data=0;
	s->next=NULL;
	return s;
}
int max(int m)
{
	for(int i=m;i>=2;i--)
	{
		int flag=0;
		for(int j=2;j<i;j++)
		{
			if(i%j==0)
			{
				flag=1;
				break;}
		}
		if(flag==0)
			return i;
	}
}
void insert_hash(int key,Hashlist hash[],int m)
{
	Hashlist s=create_hash();
	int p=max( m);
	int sub=key%p;
	if(NULL==hash[sub])
	{ hash[sub]=s;
	return;}
	s->data=key;
	s->next=hash[sub];
	hash[sub]=s;
}
void output_hash(Hashlist hash[],int m)
{ 
#if 1
	for(int i=0;i<m;i++)
	{
		printf("%d:",i);
        Hashlist p=hash[i];
		while(p)
		{
			printf("%d ",p->data);
			p=p->next;
		}
		printf("NULL");
	}
#endif
}
void search_hash(int key,Hashlist hash[],int p)
{  
	int sub=key%p;
	Hashlist s=hash[sub];
	while(s)
	{
		if(s->data=key)
		{
			printf("yes");
		}
		else
			printf("NO");
	}
}

int main(int argc, const char *argv[])
{  
	int arr[]={25,51,8,22,26,67};
	int len=sizeof(arr)/sizeof(arr[0]);
	int m=len*4/3;
    Hashlist hash[m];
	for(int i=0;i<m;i++)
	{ hash[i]=NULL;
	}
for(int i=0;i<m;i++)
{
 insert_hash(arr[i], hash, m);
}
output(hash,m);

	
	return 0;
}