C语言实现散列表(哈希Hash表)实例详解

发布时间 - 2026-01-11 01:38:09    点击率:

C语言实现散列表(哈希Hash表)

实例代码:

//散列表查找算法(Hash) 
#include <stdio.h>   
#include <stdlib.h>   
#define OK 1 
#define ERROR 0 
#define TRUE 1 
#define FALSE 0 
#define SUCCESS 1 
#define UNSUCCESS 0 
#define HASHSIZE 7          
#define NULLKEY -32768  
typedef int Status;   
typedef struct 
{ 
  int *elem;           //基址 
  int count;           //当前数据元素个数  
}HashTable; 
 
int m=0; // 散列表表长 
 
/*初始化*/ 
Status Init(HashTable *hashTable) 
{ 
  int i; 
  m=HASHSIZE; 
  hashTable->elem = (int *)malloc(m * sizeof(int)); //申请内存 
  hashTable->count=m; 
  for (i=0;i<m;i++) 
  { 
    hashTable->elem[i]=NULLKEY; 
  } 
  return OK; 
} 
 
/*哈希函数(除留余数法)*/ 
int Hash(int data) 
{ 
  return data % m; 
} 
 
/*插入*/ 
void Insert(HashTable *hashTable,int data) 
{ 
  int hashAddress=Hash(data); //求哈希地址 
 
  //发生冲突 
  while(hashTable->elem[hashAddress]!=NULLKEY) 
  { 
    //利用开放定址的线性探测法解决冲突 
    hashAddress=(++hashAddress)%m; 
  } 
 
  //插入值 
  hashTable->elem[hashAddress]=data; 
} 
 
/*查找*/ 
int Search(HashTable *hashTable,int data) 
{ 
  int hashAddress=Hash(data); //求哈希地址 
 
  //发生冲突 
  while(hashTable->elem[hashAddress]!=data) 
  { 
    //利用开放定址的线性探测法解决冲突 
    hashAddress=(++hashAddress)%m; 
 
    if (hashTable->elem[hashAddress]==NULLKEY||hashAddress==Hash(data)) return -1; 
  } 
 
  //查找成功 
  return hashAddress; 
} 
 
/*打印结果*/ 
void Display(HashTable *hashTable) 
{ 
  int i; 
  printf("\n//==============================//\n"); 
 
  for (i=0;i<hashTable->count;i++) 
  { 
    printf("%d ",hashTable->elem[i]); 
  } 
 
  printf("\n//==============================//\n"); 
} 
 
int main() 
{ 
  int i,j,result; 
  HashTable hashTable; 
  int arr[HASHSIZE]={13,29,27,28,26,30,38}; 
 
  printf("***************Hash哈希算法***************\n"); 
 
  //初始化哈希表 
  Init(&hashTable); 
 
  //插入数据 
  for (i=0;i<HASHSIZE;i++) 
  { 
    Insert(&hashTable,arr[i]); 
  } 
  Display(&hashTable); 
 
  //查找数据 
  result= Search(&hashTable,29); 
  if (result==-1)  
      printf("对不起,没有找到!\n"); 
  else  
      printf("29在哈希表中的位置是:%d\n",result); 
  return 0; 
} 

实现:

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# C语言实现散列表(哈希Hash表)  # C语言散列表  # C语言实现哈希搜索算法及原理详解  # C语言哈希表概念超详细讲解  # C语言数据结构哈希表详解  # C语言基于哈希表实现通讯录  # 哈希表实验C语言版实现  # C语言 哈希查找详解(哈希表的创建、处理冲突、查找等)  # 发生冲突  # 希望能  # 谢谢大家  # 没有找到  # UNSUCCESS  # HASHSIZE  # NULLKEY  # FALSE  # TRUE  # SUCCESS  # struct  # elem  # count  # Status  # typedef  # int  # class  # brush  # cpp  # pre 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 高端智能建站公司优选:品牌定制与SEO优化一站式服务  Laravel怎么在Controller之外的地方验证数据  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何选择可靠的免备案建站服务器?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何快速搭建高效香港服务器网站?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  动图在线制作网站有哪些,滑动动图图集怎么做?  如何用免费手机建站系统零基础打造专业网站?  Bootstrap整体框架之JavaScript插件架构  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  如何用低价快速搭建高质量网站?  如何用AWS免费套餐快速搭建高效网站?  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  长沙企业网站制作哪家好,长沙水业集团官方网站?  html如何与html链接_实现多个HTML页面互相链接【互相】  Laravel怎么为数据库表字段添加索引以优化查询  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  nodejs redis 发布订阅机制封装实现方法及实例代码  如何用IIS7快速搭建并优化网站站点?  在线教育网站制作平台,山西立德教育官网?  文字头像制作网站推荐软件,醒图能自动配文字吗?  百度浏览器如何管理插件 百度浏览器插件管理方法  Android中AutoCompleteTextView自动提示  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  微信小程序 五星评分(包括半颗星评分)实例代码  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  高端网站建设与定制开发一站式解决方案 中企动力  Laravel如何处理CORS跨域请求?(配置示例)  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Linux网络带宽限制_tc配置实践解析【教程】  如何快速建站并高效导出源代码?  MySQL查询结果复制到新表的方法(更新、插入)  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  如何在万网自助建站平台快速创建网站?  IOS倒计时设置UIButton标题title的抖动问题  长沙做网站要多少钱,长沙国安网络怎么样?  Laravel如何创建自定义Artisan命令?(代码示例)  如何快速辨别茅台真假?关键步骤解析