• 哈希表(开放定址法处理冲突)(1013)


    Description

       采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用开放定址法的线性探测。

    Input

       第一行为哈希表的长度n; 第二行为关键字的个数; 第三行为关键字集合; 第三行为要查找的数据。

    Output

       如果查找成功,输出关键字所哈希表中的地址和比较次数;如果查找不成功,输出-1。

    如果查找成功,输出关键字所哈希表中的地址和比较次数;如果查找不成功,输出-1。

    Sample Input
     
    1
    2
    3
    4
    5
    13
    11
    16 74 60 43 54 90 46 31 29 88 77
    16
    Sample Output
    1
    3,1
    #include<iostream>
    #include<cstdlib>
    using namespace std;
    typedef struct
    {
        int data;
        int len, n;
    }HashTable;
    HashTable ha[101],Ha;
    void InsertHT()
    {
        int adr, k, cur = 0;
        cin >> k;
        adr = k%Ha.len;
        if (ha[adr].data == -1)
            ha[adr].data = k;
        else
        {
            while (ha[adr].data != -1 && cur < Ha.len)
            {
                adr = (adr + 1) % Ha.len;
                cur++;
            }
            ha[adr].data = k;
        }
    }
    void CreateHT(int len, int n)
    {
        int i;
        Ha.len = len, Ha.n = n;
        for (i = 0; i < n; i++)
            ha[i].data = -1;
        for (i = 0; i < n; i++)
            InsertHT();
    }
    void Search(int x)
    {
        int adr = x%Ha.len;
        int cnt = 1; int k = 0;
        while (ha[adr].data != -1 && ha[adr].data != x&&k<Ha.len)
        {
            cnt++;
            adr = (adr + 1) % Ha.len;
            k++;
        }
        if (ha[adr].data == x)
            cout << adr << ',' << cnt;
        else
            cout << -1;
    }
    int main()
    {
        int len, n, x;
        cin >> len >> n;
        CreateHT(len, n);
        cin >> x;
        Search(x);
        return 0;
    }
    View Code
  • 相关阅读:
    AngularJS 包含HTML文件
    AngularJS 验证
    AngularJS html+DOM+ng-click事件
    表格边框css
    Ubantu下面命令听歌(豆瓣fm)
    AngularJS $http
    AngularJS过滤器
    Python-注册
    Python之内置函数
    生成手机号码代码
  • 原文地址:https://www.cnblogs.com/traini13/p/4579897.html
Copyright © 2020-2023  润新知