⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search_chain_hash.c

📁 哈希表操作
💻 C
字号:
#include <stdio.h>
#include <malloc.h>

#define MAXSIZE 100
#define KEYTYPE int 

typedef struct node
{
    KEYTYPE key;
	struct node *next;
}CHAINHASH;

void create_chain_hash(CHAINHASH *HTC[])
{
	//建立哈希表
	CHAINHASH *p;
	int i,j;
	i=0;
	scanf("%d",&i);//输入哈希表元素关键字值
	while(i!=-99)
	{
		j=i%13;
		p=(CHAINHASH *)malloc(sizeof(CHAINHASH));//生成结点,挂入哈希表中
		p->next=HTC[j];
		p->key=i;
		HTC[j]=p;
		scanf("%d",&i);//输入哈希表元素关键字值
	}	
}

void print_chain_hash(CHAINHASH *HTC[])
{
	//显示哈希表
	CHAINHASH *p;
	int i;
	for(i=0;i<13;i++)
	{
		if(HTC[i]==NULL)printf("%3d|^\n",i);
		else
		{
			p=HTC[i];
			printf("%3d|->",i);
			while(p!=NULL)
			{
				printf("%5d->",p->key);
				p=p->next;
			}
			printf("^\n");
		}
	}
}

int search_chain_hash(CHAINHASH *HTC[],int k)
{
	//在哈希表中查找元素
	CHAINHASH *p;
	int j;
	j=k%13;//哈希函数:ADD(rec(key))=key MOD 13
	p=HTC[j];
	if(p!=NULL)//在哈希表中查找元素
	{
		while((p->key!=k)&&(p->next!=NULL)) p=p->next;
		if(k==p->key) return 1;//查找成功,返回1
		else return 0;//查找不成功,返回0
	}
	else return 0;
}

main()
{
	CHAINHASH *HTC[MAXSIZE];
	int i,k;
	printf("\n建立哈希表\n\n");
    for(i=0;i<MAXSIZE;i++)
		HTC[i]=NULL;
	printf("请输入哈希表元素关键字值,关键字为正整型量,用空格分开,-99为结束标志:\n");
	create_chain_hash(HTC);
	printf("显示建立的哈希列表:\n\n");
	print_chain_hash(HTC);
	printf("\n输入待查元素关键字:");
	scanf("%d",&i);
	k=search_chain_hash(HTC,i);
	if(k==0)printf("哈希列表中待查元素不存在\n\n");
	else printf("哈希列表中待查元素存在\n\n");	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -