2022.7.25

使用哈希存储将数据存入哈希表中,并进行查找:

头文件:

#ifndef _HASH_H_
#define _HASH_H_
#include<stdio.h>
#include<stdlib.h>
#define N 10
#define P 13
typedef int datatype;
typedef struct  Node
{
	datatype data;
	struct Node *next;
}node;

void init_hash(node *hash[]);

void insert_hash(node*hash[],int x);
void show_hash(node*hash[]);
void  search_hash(node*hash[],int num);
#endif

 功能函数:

#include"hash.h"
void init_hash(node*hash[])  //初始化哈希表
{
	for(int i=0;i<P;i++)
	{
		hash[i] = NULL;
	}
	printf("初始化成功\n");
}

void insert_hash(node*hash[],int x)  //将值存储入哈希表中
{
	int index = x%P; //定位要存储的链表
    

	//将数据封装成节点
    node*q =(node*)malloc(sizeof(node));
	if(NULL==q)
	{
		printf("空间申请失败\n");
		return ;
	}
	q ->data = x;
	q-> next = NULL;

	q->next = hash[index];
	hash[index] = q;
}



void show_hash(node*hash[])  //遍历哈希表
{
	for(int i=0; i<P;i++)
	{
			printf("%d:",i);
			node*q = hash[i];
			while(q!=NULL)
			{
				printf("%d->",q->data);
				q = q->next;
			}
			printf("NULL\n");
	}
}


void search_hash(node*hash[],int num)  //按值查找
{
     int index;
	 index=num%P;
	 node *p = hash[index];
	 while(p!=NULL&&p->data!=num)
	 {
		 p=p->next;
	 }
	 if(p==NULL)
		 printf("不在表中\n");
	 else
		 printf("在表中\n");
}

头文件:

 

#include"hash.h"
int main(int argc, const char *argv[])
{
	int arr[N] = {25,51,8,22,26,67,11,16,54,41};
	node *hash[P];     //哈希表
	init_hash(hash);
	for(int i = 0;i<N ;i++)
	{
		insert_hash(hash,arr[i]);
	}
	show_hash(hash);
	search_hash(hash,26);	
	search_hash(hash,100);
	return 0;
}

结果演示:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值