简单好用的哈希表

哈希表板子

以后考试不要总自己发挥妄图创造模板。。

 1 struct Hsh{
 2 int head[N1],to[M1],nxt[M1],val[M1],cte;
 3 void ins(int x,int w)
 4 {
 5     int u=x%maxn,j,v;
 6     for(j=head[u];j;j=nxt[j])
 7     {
 8         v=to[j];
 9         if(v==x) return;
10     }
11     cte++; to[cte]=x; nxt[cte]=head[u];
12     head[u]=cte; val[cte]=w;
13 }
14 int find(int x)
15 {
16     int u=x%maxn,j,v;
17     for(j=head[u];j;j=nxt[j])
18     {
19         v=to[j];
20         if(v==x) return val[j];
21     }
22     return -1;
23 }
24 };

原文地址:https://www.cnblogs.com/guapisolo/p/10252234.html

时间: 2024-11-20 20:50:50

简单好用的哈希表的相关文章

hdu acm 1425 sort(哈希表思想)

sort Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25803    Accepted Submission(s): 7764 Problem Description 给你n个整数,请按从大到小的顺序输出其中前m大的数. Input 每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且

程序员,你应该知道的数据结构之哈希表

哈希表简介 哈希表也叫散列表,哈希表是一种数据结构,它提供了快速的插入操作和查找操作,无论哈希表总中有多少条数据,插入和查找的时间复杂度都是为O(1),因为哈希表的查找速度非常快,所以在很多程序中都有使用哈希表,例如拼音检查器. 哈希表也有自己的缺点,哈希表是基于数组的,我们知道数组创建后扩容成本比较高,所以当哈希表被填满时,性能下降的比较严重. 哈希表采用的是一种转换思想,其中一个中要的概念是如何将键或者关键字转换成数组下标?在哈希表中,这个过程有哈希函数来完成,但是并不是每个键或者关键字都需

哈希表(hash table)基础概念

哈希是什么 引入:我们在学习数组的时候,使用数组元素的下标值即可访问到该元素,所花费的时间是O(1),与数组元素的个数n没有关系,这就是哈希方法的核心思想. 哈希方法:以关键值K为自变量,通过一定的函数关系h(K)(哈希函数)计算出对应的函数值,把这个值解释为结点的存储地址,将结点的关键码(key)和属性数据(value)一起存入此存储单元中.检索时,用同样的函数计算出地址,找到对应的数据. 哈希表:按哈希存储方式构造的存储结构称为哈希表(hash table) 举例:已知线性表关键码值集合为S

哈希表的简单操作

哈希表中,关键值通过哈希函数映射到数组上,查找时通过关键值直接访问数组.哈希表的关键问题在于哈希函数的构造和解决冲突的方法. 下面采用最简单的线性探测展示一下哈希表的基本操作: 1 //Hashtable 2 class HashTable { 3 private: 4 string *elem; 5 int size; 6 public: 7 HashTable() { 8 size = 2000; 9 elem = new string[size]; 10 for (int i = 0; i

【算法导论】简单哈希表的除法实现

哈希表,又名散列表,hashtable...云云,看似很高大上,其实不过是直接寻址的延伸而已.直接寻址为何物,看一个数组:a[10],那么取其中一个元素a[1],这就是直接寻址,直接去这个a+1的地址上,就找到了这个数值,时间复杂度为O(1).而哈希表的目的就是要让查找的时间复杂度尽量往O(1)上靠. 一.哈希表的最简单形式 假如有10000个数,比如0~9999,是可能出现的数字的集合,我们现在要将一段时间内,出现的数字,全部保存起来.如果出现的数字都不重复的情况下,我们可以使用一个长度为10

哈希表的简单实现

下面这个散列表的实现来自K&R,很经典.在其他场景中遇到的实现更复杂,基本原理不变,只是在hash算法,或者在快速查询上做了优化. #include <stdio.h> #include <stdlib.h> //具有相同hash值构成的链表 struct nlist{ struct nlist * next; char * name;  //key-定义的名字 char * defn;  //value-替换文本 }; #define HASHSIZE 101  //桶的

简单的哈希表映射试验

对于很长的线性数据结构,进行搜索,可以用哈希表的方式. #include <iostream> #include <stdio.h> using namespace std; //数据类型 //注意:每一个数据节点,须绑定一个唯一的Key值 //这一点可以简单理解为:如果是工人信息,可以使用工号:学生信息,可以用学号 //设备信息,可以用设备编号 struct info {     int id;     char name[10]; }; info data[10]={0};//

简单的哈希表实现 C语言

简单的哈希表实现 简单的哈希表实现 原理 哈希表和节点数据结构的定义 初始化和释放哈希表 哈希散列算法 辅助函数strDup 哈希表的插入和修改 哈希表中查找 哈希表元素的移除 哈希表打印 测试一下 这是一个简单的哈希表的实现,用c语言做的. 原理 先说一下原理. 先是有一个bucket数组,也就是所谓的桶. 哈希表的特点就是数据与其在表中的位置存在相关性,也就是有关系的,通过数据应该可以计算出其位置. 这个哈希表是用于存储一些键值对(key -- value)关系的数据,其key也就是其在表中

UVA1225DigitCounting(简单哈希表)

Trung is bored with his mathematics homeworks. He takes a piece of chalk and starts writing a sequence of consecutive integers starting with 1 to N (1 < N < 10000). After that, he counts the number of times each digit (0 to 9) appears in the sequenc