#include<stdio.h>
#include<malloc.h>
#define P 13
typedef struct Node{
struct Node* link;
int data;
}Node;
int Hash(int key)
{
return key%P;
}
void init(Node *S)
{
for(int i=0;i<P;i++)
S[i].link=NULL;
}
void insert(Node *S,int x)
{
Node *p=(Node*)malloc(sizeof(Node));
p->data=x;
p->link=S->link;
S->link=p;
}
void show(Node *S)
{
for(int i=0;i<P;i++)
{
printf("[%d]->",i);
Node *p=S[i].link;
while(p!=NULL)
{
printf("%d->",p->data);
p=p->link;
}
printf("NULL\n");
}
}
void create(Node *S,int *data,int len)
{ int key;
for(int i=0;i<len;i++)
{
int key=Hash(data[i]);
insert(&S[key],data[i]);
}
}
int main()
{
Node S[10];
init(S);
int data[]={1,2,3,4,5,6,7,8,9,10,11,25,36,78};
int len=sizeof(data)/sizeof(int);
create(S,data,len);
show(S);
}