• 查找五:散列表查找


     1 //散列表
     2 #include<iostream>
     3 using namespace std;
     4 #define NULLKEY -32768
     5 #define HASHSIZE 12 //定义散列表长度为12
     6 
     7 struct HashTable
     8 {
     9     int *elem;  //数据元素存储基址
    10     int count;  //当前数组元素个数
    11 };
    12 
    13 int m = 0; //散列表长度
    14 
    15 //初始化散列表
    16 bool InitHashTable(HashTable *H)
    17 {
    18     m = HASHSIZE;
    19     H->count = m;
    20     H->elem = new int[m];
    21     for(int i=0;i<m;i++)
    22         H->elem[i] = NULLKEY;
    23     return true;
    24 }
    25 
    26 //散列函数
    27 int Hash(int key)
    28 {
    29     return key % m;
    30 }
    31 
    32 //插入关键字进散列表
    33 void InsertHash(HashTable *H, int key)
    34 {
    35     int addr = Hash(key);
    36     while(H->elem[addr] != NULLKEY)
    37     {
    38         addr = (addr+1)%m;
    39     }
    40     H->elem[addr] = key;
    41 }
    42 
    43 //散列表查找关键字
    44 bool SearchHash(HashTable H, int key, int *addr)
    45 {
    46     *addr = Hash(key);
    47     while(H.elem[*addr] != key)
    48     {
    49         *addr = (*addr+1)%m;
    50         if(H.elem[*addr]==NULLKEY || *addr == Hash(key))
    51             return false;
    52     }
    53     return true;
    54 }
    55 
    56 int main()
    57 {
    58     int arr[HASHSIZE]={12,67,56,16,25,37,22,29,15,47,48,34};
    59     int i,p,key,result;
    60     HashTable H;
    61 
    62     key=39;
    63 
    64     InitHashTable(&H);
    65     for(i=0;i<m;i++)
    66          InsertHash(&H,arr[i]);
    67     
    68     result=SearchHash(H,key,&p);
    69     if (result)
    70         cout<<"查找 "<< key <<" 的地址为:"<<p<<endl;
    71     else
    72         cout<<"查找 "<< key <<" 失败。"<<endl;
    73 
    74     for(i=0;i<m;i++)
    75     {
    76         key=arr[i];
    77         SearchHash(H,key,&p);
    78         cout<<"查找 "<< key <<" 的地址为:"<<p<<endl;
    79     }
    80 
    81     return 0;
    82 }
  • 相关阅读:
    python下RSA 加密/解密,签名/验证
    python字符串str和字节数组相互转化
    代码存档
    windows 7 安装 scrapy
    scrapy 爬取自己的博客
    win32api 找不到指定的模块
    SQLite3日期与时间,常见函数
    sqlite3日期数据类型
    myeclipse集成maven
    UIKit class hierarchy
  • 原文地址:https://www.cnblogs.com/jx-yangbo/p/5958077.html
Copyright © 2020-2023  润新知