7-3 构造散列表(PTA程序设计)
设散列表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程序设计)相关推荐
- 考研数据结构之查找(9.8)——练习题之使用散列函数H(k)= 3k mod 11并采用链地址法处理冲突并构造散列表及设计散列表的完整算法(C表示)
题目 使用散列函数: H(k)= 3*k mod 11 并采用链地址法处理冲突.试对关键字序列(22, 41, 53, 46, 30, 13, 01, 67)构造散列表,求等概率情况下查找成功的平均查 ...
- 构造散列表 (20 分)
设散列表a[18],散列函数是hask(k)=k%17,用开放地址法解决冲突hi=(h0+di)%m.冲突时,使用增量序列di=5i.计算输入序列(值>=0)对应的散列地址值.(输入个数不会超过 ...
- 构造散列表(Hash Table)数据结构
散列表又叫哈希表,可以理解成将一堆没有联系的数字,通过某种方式全部按照一定规律存放在一个表中,当你想要查找某个数字时,只需要根据这个(一定规律)就可以找到存放在这个散列表(哈希表)中具有一系列特征的数 ...
- 散列表查找的一个实例
这里解决冲突的方法是开放地址法:"开放地址指的是表中尚未被占用的地址,开放地址法就是当冲突发生时候,形成一个地址序列,沿着这个序列逐个进行探测,直到找到一个空的开放地址,将发生冲突的关键字存 ...
- 数据结构之散列表(七)
前言 一.什么是散列表 散列表是如何组织数据的呢? 散列表的基本概念 二.Hash算法的设计 什么是Hash算法 Hash算法的应用场景 三.散列表冲突的解决 1. 开放寻址法 2. 链表法 3. 开 ...
- 《数据结构与算法》(二十)- 散列表查找
目录 前言 1. 散列表查找(哈希表)概述 1.1 散列表查找定义 1.2 散列表查找步骤 2. 散列函数的构造方法 2.1 直接定址法 2.2 数字分析法 2.3 平方取中法 2.4 折叠法 2.5 ...
- 数据结构与算法(七)—— 散列表结构及其实现和应用
注:本篇内容参考了<Java常用算法手册>.<大话数据结构>和<算法导论(第三版)>三本书籍.并参考了百度百科. 本人水平有限,文中如有错误或其它不妥之处,欢迎大家 ...
- 数据结构(55) 散列表(哈希表,hash table,hash map)
目录 1.散列表的基本概念 2.散列函数的构造方法 3.常用的散列函数 3.1.直接定址法 3.2.除留余数法 3.3.数字分析法 3.4.平方取中法 3.5.乘法哈希法(The Multiplica ...
- 哈希表(散列表)基础知识总结
目录 1.散列表概述 1.1散列表查找定义 1.2散列表查找步骤 2.散列函数的构造方法 2.1直接定址法 2.2数字分析法 2.3平方取中法 2.4折叠法 2.5除留余数法 2.6随机数法 3.处理 ...
- 散列表(哈希表)(散列函数构造、处理冲突、查找)
本文转载自: [1]https://blog.csdn.net/qq_22238021/article/details/78258605 [2]https://blog.csdn.net/duan19 ...
最新文章
- LDAP落地实战(三):GitLab集成OpenLDAP认证
- c++中list容器
- Oracle C#处理时间类型的Insert
- c++rpg黑框游戏_NO总本色出演断智大师兄,电竞魔音主C人《超级猎杀》一战成名...
- iTunes怎么下载
- B6-简析响应者链条
- 转载JMF多媒体doc教程
- CString to LPWSTR
- 土壤重金属含量分布、Cd镉含量、Cr、Pb、Cu、Zn、As和Hg、土壤采样点、土壤类型分布
- C++ 租房管理系统
- IPM是如何控制三相电机的
- 2022年金三银四该如何规划,才能轻松拿到offer
- MSDN2015下载与安装
- 手机录制连续点赞并周期执行(免代码)
- 美国国防科研情报追踪系统发布,200余所美国实力高校尽收眼底!
- 最大信息熵增益_信息熵(Entropy)、信息增益(Information Gain)
- 【浙江大学计算机学院】ccnt实验室之,CCNT实验室
- 护肤品买了这么多还是不见好转,钱都去哪里了?
- 《Think Python 2e》作业实现(二): 变量、表达式和语句
- bibtex类型以及格式要求
热门文章
- mac苹果电脑安装非app store软件无法安装的解决办法
- 有第三方扩展组件的layui 文档地址
- 如何卸载mysql server 2005_彻底的卸载SQL Server2005
- 浏览器 pad android,360安全浏览器平板电脑Pad专用版-360安全浏览器HD 安卓版v1.1.0-PC6安卓网...
- 长沙理工大学c语言编程题,长沙理工大学2014年上期期末c语言编程题库.doc
- Python 类与对象
- Moodle 安装的时候提示 original IP
- xlinx ISE的程序下载
- 现代操作系统(原书第四版)课后题答案 —— 第一章 引论
- 12864c与语言字符显示,12864液晶显示C语言程序设计实例