开放性地址处理法与冲突法处理哈希表的查找和插入

2023-10-22 11:48

本文主要是介绍开放性地址处理法与冲突法处理哈希表的查找和插入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

 

/*用开放性地址处理冲突法定义的哈希表*/
#define  M  997
typedef   struct{KeyType   key;DataType  data;	
}NodeType;
typedef  NodeType   HashTable[M];
-----------------------------------------------------------------
/*用除余法设计哈希函数*/ 
int  h(KeyType  K, int m){return   K%m;	
}
---------------------------------------------------------------------- 
/*线性表查探法查找关键字*/
int   HashSearch1(HashTa)ble  HT, int  K, int m){int   d,temp;d = h(K,m);temp = d;while(HT[d].key != -32768){if(HT[d].key == K)return d;elsed = (d+1)%m;if(d == temp)return -1;	}	return  d;
}
------------------------------------------------------------------- 
/*在哈希表上插入一个节点*/
int  HashInsert1(HashTable  HT, NodeType  s, int m){int d;d = HashSearch1(s.key, m);if(d = -1)    return -1;                         //哈希表已满;	else{if(s.key == HT[d].key)return 0;else{HT[d] = s;return 1;	}	}
}--------------------------------------------------------------------
/*用拉链法定义哈希表*/
#define  M  997
typedef  struct  node{KeyType  key;DataType data;struct node *next;
}HTNode;
typedef  HTNode  *HT[M];
----------------------------------------------------------------------/*查找关键字k*/
HTNode*   HashSearch2(HT  T, KeyType  K, int m){HTNode  *p = T[h(K,m)];while(p != NULL  && p->key  != K)p = p->next;return  p;	
}/*插入结点s*/
int    HashInsert2(HT  T, HTNode  *s, int m){int  d;HTNode  *p = HashSearch2(T,s->key, m);if(p == NULL)    return 0;else{d = h(s->key, m);s->next = T[d];	T[d] = s;return 1;}	
}


 

这篇关于开放性地址处理法与冲突法处理哈希表的查找和插入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/261241

相关文章

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed