ch7_4.c
来自「一个很好的数据结构(C语言版)讲义。附带全部所需算法源码。」· C语言 代码 · 共 66 行
C
66 行
#include <stdio.h>
#define M 16
int h(int k)
{ return(k%13);
}
int slbxxcz(int t[],int k)
{ int i,j=0;
i=h(k);
while((j<M)&&(t[(i+j)%M]!=k)&&(t[(i+j)%M]!=0))
j++;
i=(i+j)%M;
if(t[i]==k) return(i);
else return(-1);
}
int slbxxcr(int t[],int k)
{ int i,j=0;
i=h(k);
while((j<M)&&(t[(i+j)%M]!=k)&&(t[(i+j)%M]>0))
j++;
if(j==M) return(0);
i=(i+j)%M;
if(t[i]<=0)
{ t[i]=k; return(1); }
if(t[i]==k) return(1);
}
int slbxxsc(int t[],int k)
{ int i,j=0;
i=h(k);
while((j<M)&&(t[(i+j)%M]!=k)&&(t[(i+j)%M]!=0))
j++;
i=(i+j)%M;
if(t[i]==k)
{ t[i]=-1; return(1); }
return(0);
}
void main()
{ int i,n=12;
int key[]={19,14,23,1,68,20,84,27,55,11,10,79};
static int hash_table[M];
for(i=0;i<n;i++)
slbxxcr(hash_table,key[i]);
printf("\n");
for(i=0;i<M;i++)
printf("%d ",hash_table[i]);
i=slbxxcz(hash_table,79);
if(i==-1)
printf("\nNot found");
else
printf("\n%d\n",i);
slbxxsc(hash_table,19);
slbxxsc(hash_table,27);
printf("\n");
for(i=0;i<M;i++)
printf("%d ",hash_table[i]);
i=slbxxcz(hash_table,27);
if(i==-1)
printf("\nNot found");
else
printf("\n%d\n",i);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?