设散列表a[18],散列函数是hask(k)=k%17,用开放地址法解决冲突hi=(h0+di)%m。冲突时,使用增量序列di=5i。计算输入序列(值>=0)对应的散列地址值。(输入个数不会超过15个)

输入格式:

第一行为输入个数;

第二行为对应的输入值,用空格隔开。

输出格式:

按输入顺序输出其散列地址。每行对应一个值及其散列地址,中间用空格隔开(即pos前后均有一个空格)

输入样例:

5
141 73 95 112 56

输出样例:

141 pos: 5
73 pos: 10
95 pos: 15
112 pos: 2
56 pos: 7

代码(Python):

list1=[]  #创建空列表,用来存放输入的数
list2=[]  #构造散列表
for i in range(18):   #如果这里不赋初值的话,列表为空,下面就会报错list index out of rangelist2.append(0)   #这里如果直接写list2[i]=0就会报错list assignment index out of range,一种情况是下标越界,另一种情况是列表为空
n=int(input())  #一共有几个数
#map()函数是将func作用于seq中的每一个元素,并将所有的调用的结果作为一个list返回。
#虽然结果作为list返回,但还是鼓励在外面加上list(),否则可能会有错误
list1=list(map(int,input().split()))  #这一行是将一行以空格为分隔的数赋值给列表
for i in range(n):  #使存在list1中的每个数按要求存入散列表list2j=list1[i]%17  #散列函数是hask(k)=k%17if list2[j]==0:      #list为空,在这种情况下使用list[0]便会报错,所以上面就会先给list2赋值list2[j]=list1[i]  #即当散列表该位置还未存入list1中得到数时,使其存入散列表else:  #否则散列表中已经有了list1中的值,散列冲突while(list2[j]!=0):  #解决冲突hi=(h0+di)%m,冲突时,使用增量序列di=5i:就是相当于冲突时,存入下标+5后的位置j=(j+5)%18    #这里一定要加5之后再除以18取余,否则会越界list2[j]=list1[i]  #在散列表中存数
for i in range(n):  #开始输入,遍历list1中的数for j in range(0,18):  #遍历散列表中的数if list2[j]!=0 and list1[i]==list2[j]:  #按list1列表里的顺序输出散列表里不为0的值print("{} pos: {}".format(list1[i],j))  #按要求输出

上面的程序给出了比较详细的注释,以便新手小白参考。程序的思路设计并不是最优的,是“笨办法”,欢迎各位大佬指正错误或者给出更优质的思路。

我是一只想成为鲲鹏的菜鸟,大家的鼓励是我前进的动力,欢迎大家点赞收藏评论哦!

7-3 构造散列表(PTA程序设计)相关推荐

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

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

  2. 构造散列表 (20 分)

    设散列表a[18],散列函数是hask(k)=k%17,用开放地址法解决冲突hi=(h0+di)%m.冲突时,使用增量序列di=5i.计算输入序列(值>=0)对应的散列地址值.(输入个数不会超过 ...

  3. 构造散列表(Hash Table)数据结构

    散列表又叫哈希表,可以理解成将一堆没有联系的数字,通过某种方式全部按照一定规律存放在一个表中,当你想要查找某个数字时,只需要根据这个(一定规律)就可以找到存放在这个散列表(哈希表)中具有一系列特征的数 ...

  4. 散列表查找的一个实例

    这里解决冲突的方法是开放地址法:"开放地址指的是表中尚未被占用的地址,开放地址法就是当冲突发生时候,形成一个地址序列,沿着这个序列逐个进行探测,直到找到一个空的开放地址,将发生冲突的关键字存 ...

  5. 数据结构之散列表(七)

    前言 一.什么是散列表 散列表是如何组织数据的呢? 散列表的基本概念 二.Hash算法的设计 什么是Hash算法 Hash算法的应用场景 三.散列表冲突的解决 1. 开放寻址法 2. 链表法 3. 开 ...

  6. 《数据结构与算法》(二十)- 散列表查找

    目录 前言 1. 散列表查找(哈希表)概述 1.1 散列表查找定义 1.2 散列表查找步骤 2. 散列函数的构造方法 2.1 直接定址法 2.2 数字分析法 2.3 平方取中法 2.4 折叠法 2.5 ...

  7. 数据结构与算法(七)—— 散列表结构及其实现和应用

    注:本篇内容参考了<Java常用算法手册>.<大话数据结构>和<算法导论(第三版)>三本书籍.并参考了百度百科. 本人水平有限,文中如有错误或其它不妥之处,欢迎大家 ...

  8. 数据结构(55) 散列表(哈希表,hash table,hash map)

    目录 1.散列表的基本概念 2.散列函数的构造方法 3.常用的散列函数 3.1.直接定址法 3.2.除留余数法 3.3.数字分析法 3.4.平方取中法 3.5.乘法哈希法(The Multiplica ...

  9. 哈希表(散列表)基础知识总结

    目录 1.散列表概述 1.1散列表查找定义 1.2散列表查找步骤 2.散列函数的构造方法 2.1直接定址法 2.2数字分析法 2.3平方取中法 2.4折叠法 2.5除留余数法 2.6随机数法 3.处理 ...

  10. 散列表(哈希表)(散列函数构造、处理冲突、查找)

    本文转载自: [1]https://blog.csdn.net/qq_22238021/article/details/78258605 [2]https://blog.csdn.net/duan19 ...

最新文章

  1. LDAP落地实战(三):GitLab集成OpenLDAP认证
  2. c++中list容器
  3. Oracle C#处理时间类型的Insert
  4. c++rpg黑框游戏_NO总本色出演断智大师兄,电竞魔音主C人《超级猎杀》一战成名...
  5. iTunes怎么下载
  6. B6-简析响应者链条
  7. 转载JMF多媒体doc教程
  8. CString to LPWSTR
  9. 土壤重金属含量分布、Cd镉含量、Cr、Pb、Cu、Zn、As和Hg、土壤采样点、土壤类型分布
  10. C++ 租房管理系统
  11. IPM是如何控制三相电机的
  12. 2022年金三银四该如何规划,才能轻松拿到offer
  13. MSDN2015下载与安装
  14. 手机录制连续点赞并周期执行(免代码)
  15. 美国国防科研情报追踪系统发布,200余所美国实力高校尽收眼底!
  16. 最大信息熵增益_信息熵(Entropy)、信息增益(Information Gain)
  17. 【浙江大学计算机学院】ccnt实验室之,CCNT实验室
  18. 护肤品买了这么多还是不见好转,钱都去哪里了?
  19. 《Think Python 2e》作业实现(二): 变量、表达式和语句
  20. bibtex类型以及格式要求

热门文章

  1. mac苹果电脑安装非app store软件无法安装的解决办法
  2. 有第三方扩展组件的layui 文档地址
  3. 如何卸载mysql server 2005_彻底的卸载SQL Server2005
  4. 浏览器 pad android,360安全浏览器平板电脑Pad专用版-360安全浏览器HD 安卓版v1.1.0-PC6安卓网...
  5. 长沙理工大学c语言编程题,长沙理工大学2014年上期期末c语言编程题库.doc
  6. Python 类与对象
  7. Moodle 安装的时候提示 original IP
  8. xlinx ISE的程序下载
  9. 现代操作系统(原书第四版)课后题答案 —— 第一章 引论
  10. 12864c与语言字符显示,12864液晶显示C语言程序设计实例