散列表-拉链法

来源:互联网 发布:网页游戏修改软件 编辑:程序博客网 时间:2024/04/28 15:34

一个散列函数能够将转化为数组索引。散列算法的第二步是碰撞处理,也就是处理两个或者多个散列值的情况。一种直接的方法是将大小为M的数组的每一个元素指向一条链表,链表中的每个节点都存储了散列值为该元素的索引的键值对,这种方法称为拉链法,因为发生冲突的元素都被存储在链表之中,这个方法的基本思想就是选择足够大的M,使得所有链表都尽可能短以保证查找的高效。查找分为两步:首先根据散列值找到对应的链表,然后沿着链表顺序查找相应的键。

struct Node{    int key;    int value;    Node *next;    Node(int _key,int _value)    {    key=_key;    value=_value;}};class chainingHash{   private:   int  length;   Node **node;   public:chainingHash(int n){this.length=n;   **node=new Node*[n];   }void put(int key,int value){     //key到hash值的转化,这里不具体写     int n=hash(key);     Node *p=node[n];     while(p->next==null)      p++;     p->next=new Node(key,value);}int get(int key){   int n=hash(key);   Node *p=node[n];   while(p->next==null)   {      if(p->key==key)      {return p->value;      break;      }      p++;   } return -1;//表示没找到}}
0 0
原创粉丝点击