zoukankan      html  css  js  c++  java
  • 散列表的查找代码实现

     1 //定义一个散列表的结构
     2 #define HASHSIZE 12 //初始大小
     3 #define NULLKEY -32768//默认值,散列表中不可能出现的值
     4 typedef struct
     5 {
     6   int *elem;//数据元素的基址,均匀分配数组
     7   int ecount;//当前数据元素的个数
     8 }HashTable;
     9 //初始化散列表
    10 int InitHashTable(HashTable *H)
    11 {
    12    H->ecount=HASHSIZE;
    13    H->elem=(int *)malloc(HASHSIZE*sizeof(int));
    14    if(!H->elem)//生成空间失败
    15    {
    16      return -1;
    17    }
    18    for(i=0;i<HASHSIZE;i++)
    19    {
    20      H->elem[i]=NULLKEY;
    21    }
    22    return 0;
    23 }
    24 //使用除留余数法
    25 int Hash(int key)
    26 {
    27   return key % HASHSIZE;
    28 }
    29 //插入关键字到数列表
    30 void InsertHash(HashTable *H,int key)//传入散列表,待插入的关键字
    31 {
    32   int addr;//地址
    33   addr=Hash(key);//余数作为地址(偏移地址)
    34   while(H->elem[addr]!=NULLKEY){//如果不为空,则冲突出现,存放默认值
    35   addr=(addr+1)%HASHSIZE;//开放定址法的线性探测
    36   }
    37   H->elem[addr]=key;
    38 }
    39 //数列表查找关键字
    40 int SearchHash(HashTable H,int key,int *addr)//待查找的key,addr代表待查找的key存放的地址
    41 {
    42   ×addr=Hash(key);//查找效率直接为1
    43   while(H.elem[*addr]!=key)
    44   {
    45     *addr=(×addr+1)%HASHSIZE;
    46     if(H.elem[*addr]==NULLKEY||×addr==Hash(key))//H.elem[*addr]==NULLKEY代表查找到最后一个元素,×addr==Hash(key)//代表查找到第一个元素,即查找元素不存在
    47     {
    48       return -1;
    49     }
    50   }
    51   return 0;
    52 }
    这世界上有一种鸟是没有脚的,它只能够一直的飞呀飞呀,飞累了就在风里面睡觉,这种鸟一辈子只能下地一次,那一次就是它死亡的时候。
  • 相关阅读:
    注册时正则验证及提示demo
    密码的修改(首先获取该用户的id,原密码判断是否一致,新密码和再次输入密码判断是否一样)
    变量和常量
    python入门基础
    python2设计一个用户登录
    python2与python3中input的区别
    python日记----2017.7.26
    python日记----2017.7.25
    python日记----2017.7.24
    python日记----2017.7.20
  • 原文地址:https://www.cnblogs.com/xuyinghui/p/4593423.html
Copyright © 2011-2022 走看看