码迷,mamicode.com
首页 > 编程语言 > 详细

算法导论11.4开放寻址法(除法哈希函数开放寻址处理冲突)

时间:2015-02-12 18:13:15      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

 

技术分享

 

技术分享

/*
 * IA_11.4OpenAddressing.cpp
 *
 *  Created on: Feb 12, 2015
 *      Author: sunyj
 */
#include <stdint.h>
#include <string.h>
#include <iostream>
class Node {
public:
    Node() { }
    Node(int64_t const k, int64_t const d) : key(k), data(d) { }
    int64_t key;
    int64_t data;
};

class OpenAddressingLinerProb {

public:
    OpenAddressingLinerProb(int64_t const n) : length(n)
    {
        data = new Node[n]();
        memset(data, -1, n * sizeof(Node));
    }
    int64_t HashFunc(int64_t const key)
    {
        return key % length;
    }
    Node HashFuncLinerProbSearch(int64_t const key)
    {
        for (int64_t i = 0; i < length; i++)
        {
            if (data[HashFunc(key) + i].key == key)
            {
                return data[HashFunc(key) + i];
            }
        }
        return Node();
    }
    void HashFuncLinerProbInsert(Node const x)
    {
        for (int64_t i = 0; i < length; i++)
        {
            if (data[HashFunc(x.key) + i].key == -1)
            {
                data[HashFunc(x.key) + i] = x;
                return ;
            }
        }
    }
private:
    Node*   data;
    int64_t length;
};

int main()
{
    OpenAddressingLinerProb linertable(7);
    Node node2(2, 200);
    Node node3(5, 300);
    Node node9(9, 900);
    Node node4(4, 400);

    linertable.HashFuncLinerProbInsert(node2);
    linertable.HashFuncLinerProbInsert(node3);
    linertable.HashFuncLinerProbInsert(node9);
    linertable.HashFuncLinerProbInsert(node4);

    Node tmp = linertable.HashFuncLinerProbSearch(4);
    std::cout << tmp.data << std::endl;
    tmp = linertable.HashFuncLinerProbSearch(2);
    std::cout << tmp.data << std::endl;
    tmp = linertable.HashFuncLinerProbSearch(9);
    std::cout << tmp.data << std::endl;
    return 0;
}

// Linear probing

 

技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享

算法导论11.4开放寻址法(除法哈希函数开放寻址处理冲突)

标签:

原文地址:http://www.cnblogs.com/sunyongjie1984/p/4288415.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!