Description

使用链地址法(又称拉链法)可以解决Hash中的冲突问题。其基本思想是:将具有相同哈希地址的记录链成一个单链表,m个哈希地址就设m个单链表,然后用一个数组将m个单链表的表头指针存储起来,形成一个动态的结构(图1)。

现在给定哈希函数为Hash(key)= key mod 13,要求使用链地址法处理冲突,设有冲突的元素均插入表尾。要求建立起相应哈希表,并按一定格式打印。

Input

输入包含多组数据。对于每组数据:

第1行为整数n(1 <=n <= 100), 代表key的总数。
接下来n行,每行一个整数,代表一个key。Key与key两两不相同。

当n=0的时候表示输入结束。该行不作处理。

Output

对于每一组数据输出13行,每行表示某个哈希值下的Key。如果没有任何key,则对应NULL。Key之间用空格隔开,每行行末没有空格。格式如下面例子。

输出建立好的hash表,比如下表

应输出
0#22 11
1#89
2#NULL
3#3 47
4#37 92
5#16
6#50
7#29 7
8#8
9#NULL
10#10

Sample Input
 Copy sample input to clipboard
34
7673
4664
5141
7711
8253
6868
5547
7644
2662
2757
37
2859
8723
9741
7529
778
2316
3035
2190
1842
288
106
9040
8942
9264
2648
7446
3805
5890
6729
4370
5350
5006
1101
0
Sample Output
0#7644 8723
1#2757 5890 5006
2#7711 7529 2316 288 106 4370
3#7673
4#6868 9741
5#9040
6#5141 3035 2190
7#5350
8#9264 6729
9#5547 1842 2648 3805 1101
10#4664 2662 7446
11#8253 37 778 8942
12#2859
#include<iostream>
#include<vector>
using namespace std; int main()
{
int num;
int key; while(cin>>num&&num)
{
vector<int> hashTable[13];
while(num--)
{
cin>>key;
int temp=key%13;
hashTable[temp].push_back(key);
} for(int i=0;i<13;i++)
{
cout<<i<<'#';
if(hashTable[i].empty())
cout<<"NULL";
else
{
for(vector<int>::iterator it=hashTable[i].begin(); it!=hashTable[i].end(); it++)
cout<<*it<<" ";
}
cout<<endl;
}
}
return 0;
}

  

[SOJ] 简单哈希的更多相关文章

  1. POJ 3349 Snowflake Snow Snowflakes(简单哈希)

    Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 39324   Accep ...

  2. POJ:2528(Mayor's posters)离散化成段更新+简单哈希

    http://poj.org/problem?id=2528 Description The citizens of Bytetown, AB, could not stand that the ca ...

  3. C语言-简单哈希表(hash table)

    腾讯三面的时候,叫我写了个哈希表,当时紧张没写好···结果跪了··· 回来后粪发涂墙,赶紧写了一个! 什么都不说了···先让我到厕所里面哭一会··· %>_<% 果然现场发挥,以及基础扎实 ...

  4. sicily 4699. 简单哈希

    Description 使用线性探测法(Linear Probing)可以解决哈希中的冲突问题,其基本思想是:设哈希函数为h(key) = d, 并且假定哈希的存储结构是循环数组, 则当冲突发生时,  ...

  5. sicily 1004. 简单哈希

    Description 使用线性探测法(Linear Probing)可以解决哈希中的冲突问题,其基本思想是:设哈希函数为h(key) = d, 并且假定哈希的存储结构是循环数组, 则当冲突发生时,  ...

  6. 【bzoj3555】[Ctsc2014]企鹅QQ 简单哈希

    传送门 题目分析 题意即求有多少对字符串只相差一个字符,枚举删除每个字符后的哈希, 看有多少相等即可. 比如有如下字符串:$Sd123$,其中S部分的哈希值为H,删除的是d,则原字符串的哈希值为$$( ...

  7. 元组/字典/集合内置方法+简单哈希表(day07整理)

    目录 二十三.元组内置方法 二十四.字典数据类型 二十五 集合内置方法 二十五.数据类型总结 二十六.深浅拷贝 补充:散列表(哈希表) 二十三.元组内置方法 什么是元组:只可取,不可更改的列表 作用: ...

  8. 简答哈希实现 (nyoj 138 找球号2)

    例题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=138 代码目的:复习哈希用 代码实现: #include "stdio.h&qu ...

  9. 哈希(Hash)与加密(Encrypt)的基本原理、区别及工程应用

    0.摘要 今天看到吉日嘎拉的一篇关于管理软件中信息加密和安全的文章,感觉非常有实际意义.文中作者从实践经验出发,讨论了信息管理软件中如何通过哈希和加密进行数据保护.但是从文章评论中也可以看出很多朋友对 ...

随机推荐

  1. 依赖注入和IOC

    http://www.bbsmvc.com/archiver/csharp/thread-831-1.html 本来想使用一下Ninject的,然后搜索了很久,都没找到比较详细的关于Ninject的使 ...

  2. 学SpringMVC收藏

     一个较完整的SpringMVC工程的配置 2014-01-22 17:17:25 标签:java spring springMVC 配置 springSecurity web.xml 原创作品,允许 ...

  3. Jquery框架

    现在Jquery框架对于开发人员基本上是无人不知,无人不晓了,用起来十分的方便,特别是选择器十分强大,提高了我们的开发速度.但是好多人也只是停留在了会用的基础上,我个人觉得会用一个框架不算什么,只能说 ...

  4. c++class 内存布局

    #include <iostream> using namespace std; class base1 { int a; double b; char c; }; int main() ...

  5. oauth与openid

    转自http://desert3.iteye.com/blog/1701626 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列 ...

  6. 【C++ 中文手册】即将完成

    [C++ 中文手册]即将完成 内容包含C++11,历时一年,日夜赶工,即将完成! 该参考手册主要由以下四部份内容组成: C++ 语言 C++ 继承了 C 语言 的大部分语法,并在其基础上修改或增加部分 ...

  7. z-index 解析

    很多人对z-index的认识仅止于:z-index是控制元素在页面中的堆叠顺序,z-index值高的元素显示在z-index值低的前面.而其中的原因才很少有人去深究,直到自己在实际项目中碰到由于z-i ...

  8. Xcode5和ObjC新特性

    Welcome to Xcode 5 这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览.本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,但是还烦请保留原文链接,谢谢您的 ...

  9. IOS学习之路九(配置restful webservice 框架restkit)

    RestKit 是一个开源的 objective-c 框架,容许在 iOS 和 Mac OS X 的 Objective-C 中与 RESTful Web 办事进行交互,包含简单的 HTTP requ ...

  10. 冒泡动画按钮的简单实现(使用CSS3)

    冒泡动画按钮的简单实现(使用CSS3) 原始的参考文章是 http://tutorialzine.com/2010/10/css3-animated-bubble-buttons/ ,基本原理是利用了 ...