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

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

相关文章

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、