📄 seq_hash_search.c
字号:
//闭散列表上查找元素
#include <stdio.h>
#define MAXSIZE 100
#define KEYTYPE int
typedef struct node
{
KEYTYPE key;
}HASHTABLE;
int seq_hash_search(KEYTYPE k,HASHTABLE *st)
{
//闭散列表上查找元素
int i,j;
i=0;
j=k%13;//哈希函数:ADD(rec(key))=key MOD 13
while(i<16&&st[j].key!=k&&st[j].key!=-99)
{
i++;
j=(j+1)%16;
}
if(st[j].key!=k) return 0;
else return 1;
}
void print_hash_table(HASHTABLE *st)
{
//显示闭散列表
int i;
for(i=0;i<16;i++) printf("%4d",i);
printf("\n\n");
for(i=0;i<16;i++) printf("%4d",st[i].key);
printf("\n\n");
}
main()
{
HASHTABLE a[16];
int i,j,k;
printf("\n建立闭散列表\n\n");
printf("请输入闭散列表元素关键字值,关键字为正整型量,用空格分开,-99为结束标志:\n");
for(j=0;j<16;j++)
a[j].key=-99;
scanf("%d",&i);
while(i!=-99)
{
k=i%13;
if(a[k].key==-99)a[k].key=i;
else
{
k=(k+1)%16;
while(a[k].key==-99) a[k].key=i;
}
scanf("%d",&i);//输入哈希表元素关键字值
}
printf("显示建立的哈希列表:\n\n");
print_hash_table(a);
printf("\n");
printf("\n输入待查元素关键字:");
scanf("%d",&i);
k=seq_hash_search(i,a);
if(k==0)printf("表中待查元素不存在。\n\n");
else printf("表中待查元素存在。\n\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -