概述
编写用链接表解决冲突的哈希表插入函数。
#include <stdio.h>
#include <stdlib.h>
#define SUCCESS 1
#define UNSUCCESS 0
#define DUPLICATE -1
#define m 13
typedef int Status;
typedef struct Node
{
int key;
struct Node *next;
}Node,*NodeP;
typedef struct
{
NodeP H[m];
int num;
}HashTable;
int Hash(int k);
Status SearchHash(HashTable H,int k,NodeP *p);
Status InsertHash(HashTable *H,int e);
int main()
{
HashTable H;
int i;
for(i=0;i<m;i++)
{
Node *q;
q=(Node *)malloc(sizeof(Node));
q->next=NULL;
H.H[i]=q;
}
H.num=0;
int e;
printf("What number you want to insert--0 is not ok:");
scanf("%d",&e);
while(e)
{
if(InsertHash(&H,e)==SUCCESS)
printf("Done!n");
else
printf("Duplicate!n");
printf("What number you want to insert--0 to quit:");
scanf("%d",&e);
}
return 0;
}
int Hash(int k)
{
return k%m;
}
Status SearchHash(HashTable H,int k,NodeP *p)
{
int e;
Node *q;
q=(Node *)malloc(sizeof(Node));
e=Hash(k);
*p=H.H[e];
q=(*p)->next;
while(q!=NULL && q->key<k)
{
*p=q;
q=q->next;
}
if(!q || q->key>k)
return UNSUCCESS;
else
return SUCCESS;
}
Status InsertHash(HashTable *H,int e)
{
Node *p;
p=(Node *)malloc(sizeof(Node));
if(SearchHash(*H,e,&p))
return DUPLICATE;
else
{
Node *q;
q=(Node *)malloc(sizeof(Node));
q->key=e;
q->next=p->next;
p->next=q;
H->num++;
return SUCCESS;
}
}
最后
以上就是甜美马里奥为你收集整理的算法与数据结构考研试题精析-第9章算法设计题38的全部内容,希望文章能够帮你解决算法与数据结构考研试题精析-第9章算法设计题38所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复