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

软件工程

开发平台:

C/C++

  1. #include <alloc.h>
  2. #include <stdio.h>
  3. #define M 15
  4. typedef struct node
  5. {  int key;
  6.    struct node *link;
  7. }JD;
  8. int h(int k)
  9. {  return(k%13);
  10. }
  11. JD *slbwlcz(JD *t[],int k)
  12. {  JD *p;
  13.    int i;
  14.    i=h(k);
  15.    if(t[i]==NULL)
  16.        return(NULL);
  17.    p=t[i];
  18.    while(p!=NULL)
  19.       if(p->key==k)
  20.   return(p);
  21.       else
  22.   p=p->link;
  23.    return(NULL);
  24. }
  25. int slbwlcr(JD *t[],int k)
  26. {  int i;
  27.    JD *p;
  28.    i=h(k);
  29.    if(t[i]==NULL)
  30.    {  p=(JD *)malloc(sizeof(JD));
  31.       p->key=k;
  32.       p->link=NULL;
  33.       t[i]=p;
  34.       printf("nInserted %d",k);
  35.       return(1);
  36.    }
  37.    else
  38.    {  p=t[i];
  39.       while(p!=NULL)
  40.  if(p->key==k)
  41.  {  printf("nExisted %d",k);
  42.     return(0);
  43.  }
  44.  else if(p->link!=NULL)
  45.     p=p->link;
  46.  else
  47.  {  p->link=(JD *)malloc(sizeof(JD));
  48.     p=p->link;
  49.     p->key=k;
  50.     p->link=NULL;
  51.     printf("nInserted %d",k);
  52.     return(1);
  53.  }
  54.    }
  55.    return(0);
  56. }
  57. int slbwlsc(JD *t[],int k)
  58. {  int i;
  59.    JD *p,*q;
  60.    i=h(k);
  61.    if(t[i]==NULL)
  62.       return(0);
  63.    p=t[i];
  64.    if(p->key==k)
  65.    {   t[i]=p->link;
  66.        free(p);
  67.        return(1);
  68.    }
  69.    while(p->link!=NULL)
  70.    {  q=p;
  71.       p=p->link;
  72.       if(p->key==k)
  73.       {  q->link=p->link;
  74.  free(p);
  75.  return(1);
  76.       }
  77.    }
  78.    return(0);
  79. }
  80. void main()
  81. {   int i,n=12;
  82.     int key[]={19,14,23,1,68,20,84,27,55,11,10,79};
  83.     static JD *table[M],*p;
  84.     for(i=0;i<n;i++)
  85.        slbwlcr(table,key[i]);
  86.     printf("n");
  87.     for(i=0;i<M;i++)
  88.     {  p=table[i];
  89.        while(p!=NULL)
  90.        {  printf("%d  ",p->key);
  91.   p=p->link;
  92.        }
  93.        printf("n");
  94.     }
  95.     p=slbwlcz(table,27);
  96.     if(p==NULL)
  97.  printf("nNot found");
  98.     else
  99.  printf("nfound %dn",p->key);
  100.     slbwlsc(table,19);
  101.     slbwlsc(table,27);
  102.     printf("n");
  103.     for(i=0;i<M;i++)
  104.     {  p=table[i];
  105.        while(p!=NULL)
  106.        {  printf("%d  ",p->key);
  107.   p=p->link;
  108.        }
  109.        printf("n");
  110.     }
  111.     p=slbwlcz(table,27);
  112.     if(p==NULL)
  113.  printf("nNot found");
  114.     else
  115.  printf("nfound %dn",p->key);
  116. }