hash table(哈希表)的拉链法程序

2024-02-06 10:58
文章标签 程序 哈希 table 拉链 hash

本文主要是介绍hash table(哈希表)的拉链法程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        哈希表拉链法,简单,直接看代码:

#include <iostream>
using namespace std;struct Node
{int iData;Node* pNext;
};#define N 10
typedef Node* HashTable[N]; // 指针数组
HashTable hTable;void createHashTable(int a[], int n)
{memset(hTable, 0, sizeof(hTable));int i = 0;int iRes = 0;for(i = 0; i < n; i++){iRes = a[i] % N;if(NULL == hTable[iRes]){hTable[iRes] = new Node;hTable[iRes]->iData = a[i];hTable[iRes]->pNext = NULL;}else{Node *p = hTable[iRes];while(NULL != p->pNext){p = p->pNext;	}// 插到尾部p->pNext = new Node;p->pNext->iData = a[i];p->pNext->pNext = NULL;}}
}void printHashTable()
{int i = 0;Node *p = NULL;for(i = 0; i < N; i++){p = hTable[i];if(NULL != p){cout << i << ": ";while(NULL != p){cout << p->iData << " ";p = p->pNext;}cout << endl;}else{cout << i << ": no data" << endl;}}
}bool hashTableSearch(int x)
{//查找,不要改变hTable链表int iRes = x % N;Node *p = hTable[iRes];while(NULL != p){if(x == p->iData){return true;}p = p->pNext;}return false;
}int main()
{int a[] = {33, 24, 12, 41, 22, 3, 6, 1, 19, 2, 17, 0, 14, 123, 32, 666};int n = sizeof(a) / sizeof(a[0]);createHashTable(a, n);printHashTable();int i = 0;for(i = 0; i < 1000; i++){if(hashTableSearch(i)) {cout << i << " ";}}cout << endl;return 0;
}

         结果:

0: 0
1: 41 1
2: 12 22 2 32
3: 33 3 123
4: 24 14
5: no data
6: 6 666
7: 17
8: no data
9: 19
0 1 2 3 6 12 14 17 19 22 24 32 33 41 123 666

 

        很好理解, 不多说。

 

 

这篇关于hash table(哈希表)的拉链法程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

MySQL的ALTER TABLE命令的使用解读

《MySQL的ALTERTABLE命令的使用解读》:本文主要介绍MySQL的ALTERTABLE命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、查看所建表的编China编程码格式2、修改表的编码格式3、修改列队数据类型4、添加列5、修改列的位置5.1、把列

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

Java如何将文件内容转换为MD5哈希值

《Java如何将文件内容转换为MD5哈希值》:本文主要介绍Java如何将文件内容转换为MD5哈希值的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java文件内容转换为MD5哈希值一个完整的Java示例代码代码解释注意事项总结Java文件内容转换为MD5

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo