题目

使用散列函数:

H(k)= 3*k mod 11

并采用链地址法处理冲突。试对关键字序列(22, 41, 53, 46, 30, 13, 01, 67)构造散列表,求等概率情况下查找成功的平均查找长度,并设计构造散列表的完整的算法。

分析

代码

核心代码:

/* ht[]指的是散列表结点数组;nums[]指的是关键字数组;n指的是关键字个数 */
void chash(HNode ht[],int nums[],int n) {HNode *p;// 定义一个待新建结点for(int i=0; i<maxSize; i++) {ht[i].next=NULL;// 将散列表中所有结点都置空}for(int i=0; i<n; i++) { // 插入所有的关键字p=(HNode *)malloc(sizeof(HNode));// 新建结点p->key=nums[i];// 设置结点的关键字int j=(3*nums[i])%maxSize;// 计算关键字在散列表中的地址p->next=ht[j].next;// 将结点插入到ht[j]之后ht[j].next=p;}
}

完整代码:

#include<stdio.h>
#include<stdlib.h>/* 哈希表的长度 */
#define maxSize 11typedef struct HNode {int key;struct HNode *next;
} HNode;/* ht[]指的是散列表结点数组;nums[]指的是关键字数组;n指的是关键字个数 */
void chash(HNode ht[],int nums[],int n) {HNode *p;// 定义一个待新建结点for(int i=0; i<maxSize; i++) {ht[i].next=NULL;// 将散列表中所有结点都置空}for(int i=0; i<n; i++) { // 插入所有的关键字p=(HNode *)malloc(sizeof(HNode));// 新建结点p->key=nums[i];// 设置结点的关键字int j=(3*nums[i])%maxSize;// 计算关键字在散列表中的地址p->next=ht[j].next;// 将结点插入到ht[j]之后ht[j].next=p;}
}/* 打印散列表 */
void print(HNode ht[]) {printf("\n");HNode *temp;for(int i=0; i<maxSize; i++) {temp=ht[i].next;if(temp) {while(temp) {printf("%d\t",temp->key);temp=temp->next;}printf("\n");} else {printf("null\n");}}printf("\n");
}int main() {HNode ht[maxSize];int nums[]= {22,41,53,46,30,13,1,67};int n=8;chash(ht,nums,n);print(ht);return 0;
}

运行结果:

考研数据结构之查找(9.8)——练习题之使用散列函数H(k)= 3k mod 11并采用链地址法处理冲突并构造散列表及设计散列表的完整算法(C表示)相关推荐

  1. 使用哈希函数:H(k)=3k MOD 11,并采用链地址法处理冲突。试对关键字序列(22,41,53,46,30,13,01,67)构造哈希表,求等概率情况下查找成功的查找长度,并设计构造哈希表

    使用哈希函数:H(k)=3k MOD 11 ,并采用链地址法处理冲突. 试对关键字序列(22,41,53,46,30,13,01,67)构造哈希表, 求等概率情况下查找成功的查找长度,并设计构造哈希表 ...

  2. 哈希表_实现插入、删除、查找元素操作(链地址法解决冲突)

    这几天用在写代码(实际上是为了补作业)的时间明显比以前多了,在这过程中也 发现了自己由于前期的训练太少,导致很多基础的语法都不熟悉,有很长的时间都用在了debug上.很多问题写的时候记得,过后又忘了, ...

  3. 【数据结构】人名查询哈希表设计(链地址法)

    文章目录 核心代码 链表节点定义 链地址法处理冲突 查询函数 完整代码下载 核心代码 哈希表使用「链地址法」解决地址冲突的方式,其数据结构就采用 数组+链表 ,数组的每一个元素都是一个链表节点,当地址 ...

  4. 哈希表:线性探测法和链地址法求查找成功与不成功的平均查找长度

    哈希表:线性探测法和链地址法求查找成功与不成功的平均查找长度 了解ASL的公式 线性探测法求ASL 链地址法求ASL 了解ASL的公式 查找成功时:ASL =1n\frac{1}{n}n1​ ∑i=1 ...

  5. 【数据结构】哈希表——线性探测法、链地址法、查找成功、查找不成功的平均长度

    一.哈希表 1.概念 哈希表(Hash Table)也叫散列表,是根据关键码值(Key Value)而直接进行访问的数据结构.它通过把关键码值映射到哈希表中的一个位置来访问记录,以加快查找的速度.这个 ...

  6. 哈希查找解决地址冲突的两种最常见方法(线性探测再散列,链地址法)C++实现

    哈希查找解决地址冲突的两种最常见方法(线性探测再散列,链地址法)C++实现 参考文章: (1)哈希查找解决地址冲突的两种最常见方法(线性探测再散列,链地址法)C++实现 (2)https://www. ...

  7. 【数据结构笔记40】哈希表冲突处理方法:开放地址法(线性探测、平方探测、双散列、再散列),分离链接法

    本次笔记内容: 11.3.1 开放定址法 11.3.2 线性探测 11.3.3 线性探测-字符串的例子 11.3.4 平方探测法 11.3.5 平方探测的实现 11.3.6 分离链接法 文章目录 冲突 ...

  8. 考研数据结构之查找(9.8)——练习题之编写一个函数利用二分查找算法在一个有序表中插入关键字k并保持表的有序性(C表示)

    题目 编写一个函数,利用二分查找算法在一个有序表中插入一个关键字k,并保持表的有序性. 分析 先在有序表中利用二分查找算法查找关键字值等于或小于k的结点,m指向正好等于k的结点或l指向关键字正好大于k ...

  9. 王道计算机考研 数据结构 (查找-下)

    7.3.1_B树 回顾:二叉查找树(BST) 5叉查找树 如何查找 如何保证查找效率 B树 B树的高度 思维导图 7.3.2_B树的插入删除 B树的插入 B树的删除 如果删除终端结点后低于下限 : 思 ...

最新文章

  1. 剑指offer 24:二叉搜索树的后序遍历序列
  2. linux c 笔记 文件(二)
  3. 题目1207:质因数的个数
  4. 什么是 PureMVC 框架(提供下载)
  5. JavaScript——使用正则表达式提取指定格式内容
  6. python基础系列教程——python所有包库的下载
  7. Chapter7-2_BERT and its family - Introduction and Fine-tune
  8. c语言delay_单片机模拟流星雨,电路图和程序,一起来感受下,其实C语言不难...
  9. 遗传算法优化的bp神经网络_【首发推荐】农学:基于遗传BP神经网络的采摘机器人手眼标定研究...
  10. NLP系列(6)_从NLP反作弊技术看马蜂窝注水事件
  11. Java 设计简单班级管理系统
  12. 目标管理 - SMART原则
  13. CEI Harpoon v1.3-ISO 1CD
  14. 小器件,大作用-光纤环形器在光纤传输中的应用
  15. 计算机打印机能不能取消正在,打印机怎么取消正在排队打印的任务? 打印机删除打印任务的教程...
  16. 1.1 第一课:操作示范 [Ps教程]
  17. Azure微软云(部署一台虚拟机云服务器)
  18. 【CNN】——涨点模块SE,CBAM,CA对比
  19. python,ipython,pycharm安装
  20. 格式化数据#4:有关机器学习的SDK/Lib/API

热门文章

  1. 启用Hadoop集群垃圾箱配置
  2. 谈谈对“周日焦虑症”的看法
  3. 577. 员工奖金 难度:简单
  4. 淘宝/天猫API:item_videolist_cat-获取淘宝直播分类id接口
  5. Android含资源文件引用的项目打包成jar包
  6. 【Neo4j构建知识图谱】Python调用cypher语言(1):只需5行代码一次性完成节点、关系、属性的创建
  7. SAP TRM 中的詹森阿尔法指数(Jensen's alpha)计算
  8. 求推荐一款带日历的电脑桌面记事便签
  9. JavaWeb学习第二十七天——项目实例
  10. 微信小程序简单实现上拉触底onReachBottom数据分页请求