数据结构实验之查找七:线性之哈希表
来源:互联网 发布:js获取标签属性 编辑:程序博客网 时间:2024/06/09 18:40
数据结构实验之查找七:线性之哈希表
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss
Problem Description
根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)=Key%p,将关键字映射到长度为p的哈希表中,用线性探测法解决冲突。重复关键字放在hash表中的同一位置。
Input
连续输入多组数据,每组输入数据第一行为两个正整数N(N <= 1000)和p(p >= N的最小素数),N是关键字总数,p是hash表长度,第2行给出N个正整数关键字,数字间以空格间隔。
Output
输出每个关键字在hash表中的位置,以空格间隔。注意最后一个数字后面不要有空格。
Example Input
5 5
21 21 21 21 21
4 5
24 15 61 88
4 5
24 39 61 15
5 5
24 39 61 15 39
Example Output
1 1 1 1 1
4 0 1 3
4 0 1 2
4 0 1 2 0
Hint
Author
xam
PS:
不断延伸,从已赋值的地址,延伸至未赋值的地址,然后赋值;
#include <bits/stdc++.h>using namespace std;int Hash[10010];int degree[10010];int main(){ int N,p; while(cin>>N>>p) { int key; memset(Hash,-1,sizeof(Hash)); int len = 0; for(int i = 0; i < N; i++) { cin>>key; int k = key%p; if(Hash[k] == -1) { Hash[k] = key; } else { int f = 0; while(1) { k = (key + f)%p;//延伸 if(Hash[k] == -1)//找到未赋值的地址,赋值 { Hash[k] = key; break; } else if(Hash[k] == key) { break; } else f++; } } degree[len++] = k; } for(int i = 0; i < N; i++) { if(i != 0) cout<<" "; cout<<degree[i]; } cout<<endl; } return 0;}
阅读全文
0 0
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- SDUT 数据结构实验之查找七:线性之哈希表
- SDUT 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表 151 268
- 数据结构实验之查找七:线性之哈希表
- SDUT3379数据结构实验之查找七:线性之哈希表
- SDUT 3379 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- SDUTACM 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- 数据结构实验之查找七:线性之哈希表
- PHP基础之常量
- Javascript权威指南学习笔记1:第一章
- Akka(17): Stream:数据流基础组件-Source,Flow,Sink简介
- POJ 2975 Nim (Nim的证明)
- jsp使用sessionScope获取session值
- 数据结构实验之查找七:线性之哈希表
- GitHub入门——概述
- Codeforces Round #428 (Div. 2) B. Game of the Rows
- 添加自己的package
- HTTP协议详解
- zbar的安装,按照这个安装的
- 编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程
- Java_面向对象01 构造方法
- 数组中出现次数超过一半的数字