⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8_3.txt

📁 C语言数据结构知识原代码 C语言数据结构知识原代码C语言数据结构知识原代码
💻 TXT
字号:
#include<stdio.h>
#define p 13                 /*哈希表空间大小为p*/
#define n 10
typedef int keytp;
typedef struct node{
  keytp key;
  struct node *next;
  }Hnode,*Lnode;

 createht(Lnode *ht,keytp key[])
 /*输入的关键字个数为n*/
 {
  int i,hadr;Hnode *s,*t;
  for(i=0;i<n;i++)                   /*哈希表初始化*/
   ht[i]=NULL;
  for(i=0;i<n;i++)
   {
     s=(Hnode *)malloc(sizeof(Hnode));
     s->key=key[i];
     s->next=NULL;
     hadr=key[i]%p;
      if(ht[hadr]==NULL)               /*没有冲突*/
          ht[hadr]=s;
           else{                       /*有冲突,在表尾插入结点,当然也可在表头插入*/
       t=ht[hadr];
       while(t->next!=NULL)t=t->next;
          t->next=s;
        }
    }          
 }
 Hnode *searchkey(Lnode *ht,keytp key)
 {
 int hadr;Hnode *s;
  hadr=key%p;
  if(ht[hadr]==NULL)return NULL;
   else{
   s=ht[hadr];
   while(s){
    if(s->key==key)break;
    s=s->next;
    }
   }
   return s;
  }  
 deletekey(Lnode *ht,keytp key)
 {
  int hadr;Hnode *s,*pre;
  hadr=key%p;
  if(ht[hadr]==NULL)return 0; /*没有该关键字*/
   else{
   s=ht[hadr];pre=NULL;
   while(s){
    if(s->key==key)break;
    pre=s;
    s=s->next;
    }
    if(s==NULL)return 0;       /*没有该关键字*/
    if(pre==NULL) ht[hadr]=s->next;
      else pre->next=s->next;
    free(s);                   /*删除关键字成功*/    
    printf("delete key %d success\n",key);   
   }
   return 1;
  }   
main()
{
 Lnode *ht;keytp key[]={32,75,29,63,48,94,25,46,18,70},key1;
 Lnode s;
 ht=(Lnode *)malloc(sizeof(Lnode)*p);
 createht(ht,key);
 printf("请输入要查找的关键字:\n");
 scanf("%d",&key1);
 if(s=searchkey(ht,key1))printf("该关键字存在,其地址为%d\n",s);
 printf("请输入要删除的关键字:\n");
 scanf("%d",&key1);
 deletekey(ht,key1);
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -