描述

请写出在散列表中删除关键字为k的一个记录的算法,设散列函数为H,H(key)=key%13,解决冲突的方法为链地址法。

输入

多组数据,每组三行,第一行为待输入的关键字的个数n,第二行为对应的n个关键字,第三行为需要删除的关键字k。当n=0时输入结束。

输出

每组数据输出用链地址法处理冲突的散列表。

输入样例 1

5
1 4 2 3 5
3
4
1 10 14 27
14
0

输出样例 1

0
1 1
2 2
3
4 4
5 5
6
7
8
9
10
11
12
0
1 1 27
2
3
4
5
6
7
8
9
10 10
11
12

思路:

注意:oj里使用的是尾插法!!!

这个题目中要求的哈希表和邻接表的处理方法非常类似,所以如果你还没有掌握邻接表的话,推荐先去做邻接表部分的题。同时,在我的这篇文章中,借助4003这道题比较详细地讲解了邻接表的插入,初始化等操作:

(15条消息) 4003基于邻接表的新顶点的增加(C++,附详细解析)_鹤天寻的博客-CSDN博客https://blog.csdn.net/qq_54416938/article/details/121582300?spm=1001.2014.3001.5501在4020中,也用到了邻接表,插入操作可以看这篇文章:

4020-基于链地址法的散列表的插入(C++,附思路以及头插法,尾插法两种代码)_鹤天寻的博客-CSDN博客https://blog.csdn.net/qq_54416938/article/details/121603608?spm=1001.2014.3001.5501

所以在以下思路中,默认你已经会了邻接表的相关操作了~

这个题目的操作是删除,那么删除的话需要遍历整个链表,到时候输出又遍历一遍,重复了,不妥;那怎么办呢?只要不输出那个数不就可以了吗?所以只需要写两个函数,一个创建,一个输出,把“删除”当作是控制输出格式那样去想即可,遇到了要“删除”的数字,跳过即可。

代码如下:

#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<stack>
#include<set>
#include<map>
using namespace std;typedef struct LNode
{int data;struct LNode* next;
}*linklist, LNode;
void Create(linklist& vl, int n)
{vl = new LNode[13];for (int i = 0; i < 13; i++){vl[i].data = i;vl[i].next = NULL;}//尾插法for (int i = 0; i < n; i++){int temp;cin >> temp;linklist p = new LNode, r = &vl[temp % 13];while (r->next)r = r->next;p->data = temp;p->next = NULL;r->next = p;}
}
void Show(linklist vl)
{int x;cin >> x;for (int i = 0; i < 13; i++){cout << i;linklist p = vl[i].next;while (p){if (p->data == x)cout << "";elsecout <<' '<< p->data;p = p->next;}cout << endl;}
}
int main()
{int n;while (cin >> n && n != 0){linklist vl;Create(vl, n);Show(vl);}return 0;
}

4021-基于链地址法的散列表的删除(C++,附思路)相关推荐

  1. 4020-基于链地址法的散列表的插入(C++,附思路以及头插法,尾插法两种代码)

    描述 请写出在散列表中插入关键字为k的一个记录的算法,设散列函数为H,H(key)=key%13,解决冲突的方法为链地址法. 输入 多组数据,每组三行,第一行为待输入的关键字的个数n,第二行为对应的n ...

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

    题目 使用散列函数: H(k)= 3*k mod 11 并采用链地址法处理冲突.试对关键字序列(22, 41, 53, 46, 30, 13, 01, 67)构造散列表,求等概率情况下查找成功的平均查 ...

  3. (6)散列冲突处理:链地址法

    链地址法(拉链法) 前面我们谈到了散列冲突处理的开放定址法,它的思路就是一旦发生了冲突,就去寻找下一个空的散列地址.那么,有冲突就非要换地方呢,我们直接就在原地处理行不行呢? 可以的,于是我们就有了链 ...

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

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

  5. Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区

    Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测).链地址法.再哈希.建立公共溢出区 参考文章: (1)Java解决Hash(散列)冲突的四种方法--开放地址法 ...

  6. 利用开放定址法实现散列表的创建、插入、删除、查找操作_散列表和IO

    散列表(也叫哈希表) 直接寻址法 取关键字或关键字的某个线性函数值为散列地址.即H(key)=key或H(key) = a·key + b,其中a和b为常数(这种散列函数叫做自身函数).若其中H(ke ...

  7. (7)哈希表的链地址法实现

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

  8. Hash——哈希法概念、哈希函数构造方法、哈希冲突解决办法(重点讨论链地址法)

    声明:本篇博客根据回顾老师上课知识和书籍<数据结构--用C语言描述>(耿国华)整理得出,仅作知识回顾学习用. 1.哈希法 哈希法又称散列法.杂凑法.关键字地址计算法.相对应的表称为哈希表. ...

  9. 用链接法实现散列表构造和查找

    在学习数据结构课程时,老师布置的一次录屏作业,以下内容是本次学习中的思路过程. 文章目录 题目描述 草稿记录->发现问题 解决问题 编写代码 总结 题目描述 [问题描述] 设哈希(Hash)表的 ...

最新文章

  1. ASP.NET MVC4中@model使用多个类型实例的方法
  2. Nginx源代码安装
  3. C# WInForm中 窗体的this.width和this.height的属性值不能大于显示器的最大分辨率
  4. MVC是什么?(转载)
  5. AUTOSAR从入门到精通100讲(二十)-特斯拉、高通、华为AI处理器深度分析
  6. 递归算法1加到100_五种循环方法计算1加到100
  7. js 数据写到本地记事本_微信小程序连接Mysql数据库步骤
  8. ios ffmpeg h264 decode
  9. MFC在一个工程中启动其他工程的exe文件
  10. spark 两个rdd求交集,差集,并集
  11. apache不能解析php文件_解析漏洞
  12. 别着急抢iPhone 13了!拍照有马赛克,苹果确认部分iPhone13存在bug
  13. 大家的人工智能——学习路线总览
  14. 什么是在制品限制?通过这篇文章,让你搞明白
  15. Keil5安装和使用小记
  16. requests使用socks代理
  17. micropython stm32f429 tft_基于STM32F429的TFT0.96屏幕驱动
  18. 门禁|梯控管理系统CPU卡读写器发卡器HX-WR03密码设置操作说明
  19. 充电管理芯片中的一些特性说明
  20. VUE项目报错:[Vue warn]: Error in render: “TypeError: Cannot convert object to primitive value“

热门文章

  1. python线程进程协程面试_Python学习经验之谈:关于协程的理解和其相关面试问题...
  2. Angular.js学习-入门
  3. 坑:pytest 运行报错unknown hook 'pytest_namespace' in plugin module 'allure.pytest_plugin'
  4. springboot连接数据库报错testWhileIdle is true, validationQuery not set
  5. How to: Configure an Azure SQL Database firewall using the Azure Portal
  6. DrawWindowFrame
  7. 企业上市上市央企大面积亏损折射出啥弊端?
  8. 内存分配(malloc()和free())
  9. python 函数内部声明全局变量
  10. 安装pycharm软件后,打开robot framework怎么默认用pycharm打开