数据结构----哈希表的插入与输出

devtools/2025/2/22 12:55:00/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
typedef int datatype;typedef struct Node
{struct Node *next;datatype data;
}*Linklist;//创建节点
Linklist Create_node()
{Linklist p=(Linklist)malloc(sizeof(struct Node));if(NULL==p)return NULL;//初始化指针域p->next=NULL;//初始化数据域p->data=0;return p;
}//找到<=m的最大质数,m=待排列数的长度*4/3,返回下标
int prime_max(int m)                                                 
{for(int i=m;i>=2;m--){int flag=0;//sqrt(i)《====》根号ifor(int j=2;j<sqrt(i);j++){if(i%j==0){flag=1;break;}}if(flag==0)return i;}
}//哈希表的插入void hash_insert(int key,Linklist hash[],int m)
{int p=prime_max(m);int sub=key%p;Linklist head=hash[sub];//创建链表的头Linklist s=Create_node();//创建节点s->data=key;//判空if(NULL==head){head=s;hash[sub]=s;return;}//存在多个节点s->next=head;head=s;hash[sub]=head;//更新哈希表的头
}
//哈希表的输出
void show(Linklist hash[],int m)
{for(int i=0;i<m;i++){printf("%d: ",i);Linklist p=hash[i];//定义指针P指向哈希表的头while(p!=NULL)          //遍历哈希表,输出链表数据域的数据{printf("%d ",p->data);p=p->next;}printf("NULL\n");}
}int main(int argc, const char *argv[])
{int arr[]={25,51,8,22,26,67,11,16,54,41};//将数据存入哈希表中int len=sizeof(arr)/sizeof(arr[0]);int m=len*4/3;Linklist hash[m];//定义指针数组for(int i=0;i<m;i++){hash[i]=NULL;//防止野指针}for(int i=0;i<m;i++)//将数组中的元素插入到哈希表中{hash_insert(arr[i],hash,m);}//输出show(hash,m);return 0;
}

运行结果:


http://www.ppmy.cn/devtools/160943.html

相关文章

|网络安全|网络安全学习方法

1、先网络后安全 很多初学者还没搞定网络看懂网络拓扑&#xff0c;就急着研究防火墙或VPN&#xff0c;其实这样就不清楚整个网络架构是如何安全演进的。正确的流程是&#xff1a;先通过网络协议和拓扑设计的学习&#xff0c;能独立搭建一个企业网/校园网&#xff0c;再引入局域…

QT实战-基于QWidget实现的异形tip窗口

本文主要介绍了qt中,基于QWidget实现异形tip窗口的几种实现方式,话不多说,先上图, 1.使用QPainter和QPainterPath实现 代码:tipwnd1.h #ifndef TIPWND1_H #define TIPWND1_H#include <QWidget>class TipWnd1 : public QWidget {Q_OBJECTQ_PROPERTY(QColor my_border…

帆软报表FineReport入门:简单报表制作[扩展|左父格|上父格]

FineReport帮助文档 - 全面的报表使用教程和学习资料 数据库连接 点击号>>JDBC 选择要连接的数据库>>填写信息>>点击测试连接 数据库SQLite是帆软的内置数据库, 里面有练习数据 选择此数据库后,点击测试连接即可 数据库查询 方法一: 在左下角的模板数据集…

Windows10 将Docker虚拟磁盘文件ext4.vhdx迁移至D盘

今天打开电脑发现之前迁移到D盘的ext4.vdx居然占有80多个G不得不重新清理一下了 于是先删除了d盘的ext4.vdx文件 注销了原来的 wsl --unregister docker-desktopwsl --unregister docker-desktop-data 确认 WSL 发行版状态&#xff1a; 运行以下命令以确认当前的 WSL 发行版…

空字符串““、空白字符串“ “和 null 三者的区别

空字符串、空白字符串和 null 三者的区别表格&#xff1a; 类型定义示例长度是否有值空字符串字符串长度为 0&#xff0c;但不是 null&#xff0c;即存在一个有效的空字符串对象。""0有值&#xff08;空值&#xff09;空白字符串字符串包含空格、制表符等空白字符&a…

D-FINE模型详解及代码复现

研究背景 在实时目标检测领域的快速发展背景下,D-FINE作为一项突破性的方法应运而生。它超越了现有模型如YOLOv10、YOLO11及RT-DETR v1/v2/v3,重新定义了边界框回归任务,显著提升了实时目标检测的性能上限。D-FINE通过创新的细粒度分布优化(FDR)和全局最优定位自蒸馏(GO-LS…

基于 PyQt5 实现分组列表滚动吸顶效果

基于 PyQt5 实现分组列表滚动吸顶效果 在很多应用场景中&#xff0c;例如 QQ 好友列表&#xff0c;我们都需要展示大量分组数据&#xff0c;同时希望在滚动时分组标题始终固定显示在顶部&#xff0c;提升用户体验。本文将详细介绍如何利用 PyQt5 实现类似效果——在滚动区域中…

在 Mac ARM 架构的 macOS 系统上启用 F1 键作为 Snipaste 的截屏快捷键

在 Mac ARM 架构的 macOS 系统上启用 F1 键作为 Snipaste 的截屏快捷键&#xff0c;主要涉及到两个方面&#xff1a;确保 F1 键作为标准功能键工作 和 在 Snipaste 中设置 F1 为快捷键。 因为 Mac 默认情况下&#xff0c;F1-F12 键通常用作控制屏幕亮度、音量等系统功能的快捷键…