#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
using namespace std;
#define MAXSIZE 20
typedef struct node
{
int data;
struct node *next;
}Node;
int Hash(int key,int p)
{
return key%p;
}
void Init(Node *HashLink[])
{
int i;
for(i=0;i<MAXSIZE;i++)
HashLink[i]=NULL;
}
int InsertHash(Node *HashLink[],int key,int p)//插入有四种情况
{
int k;
Node *q,*s,*pre;
k=Hash(key,p);
q=HashLink[k];
s=new Node[sizeof(Node)];
s->next=NULL;
s->data=key;
if(!HashLink[k])//第一种情况,啥也没有是空的。不带头结点的就是这点不好,非要通过改变它的自身值来改变原有地址
{
HashLink[k]=s;//易错点
return 1;
}
while(q&&q->data<key)
{
pre=q;
q=q->next;
}
if
哈希:链地址法
最新推荐文章于 2024-07-29 22:32:09 发布
这篇博客详细介绍了哈希表中链地址法的概念和应用,通过四个具体的情况分析了插入操作的处理过程,揭示了链地址法如何解决哈希冲突问题。
摘要由CSDN通过智能技术生成