CH7_4.C
上传用户:lgb298
上传日期:2013-03-22
资源大小:1025k
文件大小:1k
源码类别:

软件工程

开发平台:

C/C++

  1. #include <stdio.h>
  2. #define M 16
  3. int h(int k)
  4. {  return(k%13);
  5. }
  6. int slbxxcz(int t[],int k)
  7. {  int i,j=0;
  8.    i=h(k);
  9.    while((j<M)&&(t[(i+j)%M]!=k)&&(t[(i+j)%M]!=0))
  10.       j++;
  11.    i=(i+j)%M;
  12.    if(t[i]==k)  return(i);
  13.    else  return(-1);
  14. }
  15. int slbxxcr(int t[],int k)
  16. {  int i,j=0;
  17.    i=h(k);
  18.    while((j<M)&&(t[(i+j)%M]!=k)&&(t[(i+j)%M]>0))
  19.       j++;
  20.    if(j==M)  return(0);
  21.    i=(i+j)%M;
  22.    if(t[i]<=0)
  23.    {  t[i]=k;  return(1); }
  24.    if(t[i]==k) return(1);
  25. }
  26. int slbxxsc(int t[],int k)
  27. {  int i,j=0;
  28.    i=h(k);
  29.    while((j<M)&&(t[(i+j)%M]!=k)&&(t[(i+j)%M]!=0))
  30.       j++;
  31.    i=(i+j)%M;
  32.    if(t[i]==k)
  33.    {   t[i]=-1; return(1); }
  34.    return(0);
  35. }
  36. void main()
  37. {   int i,n=12;
  38.     int key[]={19,14,23,1,68,20,84,27,55,11,10,79};
  39.     static int hash_table[M];
  40.     for(i=0;i<n;i++)
  41.        slbxxcr(hash_table,key[i]);
  42.     printf("n");
  43.     for(i=0;i<M;i++)
  44.        printf("%d  ",hash_table[i]);
  45.     i=slbxxcz(hash_table,79);
  46.     if(i==-1)
  47.  printf("nNot found");
  48.     else
  49.  printf("n%dn",i);
  50.     slbxxsc(hash_table,19);
  51.     slbxxsc(hash_table,27);
  52.     printf("n");
  53.     for(i=0;i<M;i++)
  54.        printf("%d  ",hash_table[i]);
  55.     i=slbxxcz(hash_table,27);
  56.     if(i==-1)
  57.  printf("nNot found");
  58.     else
  59.  printf("n%dn",i);
  60. }