数据结构的字典插入,哈希表使用

C++ 中使用哈希表(unordered_map)的常用操作 //建立基本数据类型的哈希表 unordered_map<int,int> m; //<string,string>,<char,char> //向哈希表中添加元素 1.insert 函数 m.insert(pair<int,int>(1, 10)); m.insert(pair<int,int>(2, 20)); 2.用数组方法直接添加 m[3]=30; m[4]=40; //begin(),end() m.begin() //指向哈希表的第 阅读详情

数据结构的字典插入,哈希表使用
hash基数(散列表,设计哈希函数,平均查找长度(分子为查找关键字的次数,分母为关键字的个数))
散列表类似于数组结构,用于存储关键字,哈希函数可根据要求自己设置

#include<iostream>
using namespace std;
#include<string.h>
#include<stdio.h>
typedef int KeyType;
typedef int DataType;
typedef struct{
 KeyType key;
 DataType value;
}DicElement;
struct HashTable{
 int MaxNum;
 int curNum;
 DicElement *element;
};
 
typedef struct HashTable* hash;

//初始化哈希表,先设置为空表(赋初值) 
hash InitHashTable(int max){
 hash p;
 p=new struct HashTable;
 p->MaxNum=max;
 p->curNum=0;
 p->element=new DicElement[max];
 for(int i=0;i<max;i++){
  p->element[i].key=-1;
 }
 return p;
}

int HashFun(KeyType key){
 return key%13;
}

//将数据插入哈希表 
void insertHash(KeyType key,hash h){
 int i=1;
 int add=HashFun(key);
 L:if(h->element[add].key==-1){
  h->element[add].key=key;
  return;
 }
 else{
     add=(add+1)%h->MaxNum;
    }
    goto L;  //返回到L处执行
} 

//打印结果 
void print(hash h){
 for(int i=0;i<h->MaxNum;i++){ 
     if(h->element[i].key==-1)   i++;
      cout<<"i:"<<i<<"   ";
   cout<<h->element[i].key<<endl;
 }
}

int main(){
  KeyType data[]={19,14,23,1,68,20,84,27,55,11,10,79};
 hash temp=InitHashTable(13);
 for(int i=0;i<sizeof(data)/sizeof(KeyType);i++){    //求KeyType类型数组的长度 
   insertHash(data[i],temp);
    }
 print(temp);
 return 0;
}

散列表:从0开始到12的一个表用于存储数据
这里的输出结果为:(只输出有存储数据的散列表位置)

i:1   14
i:2    1
i:3    68
i:4    27  
i:5    55
i:6    19
i:7    20
i:8    84
i:9     79
i:10    23
i:11    11
i=12    10
数据结构学习笔记(八)字典、及其线性表描述 字典,线性链表描述 阅读详情

相关推荐

【Java】对接微信转账到零钱接口 Java微信商家转账 apiV3(该踩的雷都踩了)

配置apiv3依赖java代码。

Moonhwa的博客 4317

哈希表(hashtable)的数据插入、查找和遍历

本期主要和大家介绍一下哈希算法,这里主要给出哈希算法的实现方法;本期主要分享的是数据插入哈希表,在哈希表中查找数据,并且遍历哈希表的操作,哈希表是一种散列存储结构,在嵌入式应用中比较广泛,希望各位小伙伴们学起来,练起来,一起加油!

weixin_58016534的博客 1721

Xilinx IP库在Modelsim/Questasim中的高效仿真实践

本文详细介绍了在Modelsim/Questasim中高效仿真Xilinx FPGA设计的核心方法。针对仿真时常见的IP核缺失错误,重点解析了两种主流解决方案:使用Vivado的compile_simlib命令自动编译完整仿真库,以及利用export_simulation命令为特定工程生成仿真脚本。文章还提供了手动配置库的深入理解、实战排错步骤及高级避坑指南,帮助用户构建稳定、高效的独立仿真环境。

sony5的博客 1229

哈希表中如何插入,查找以及删除元素

总之,将元素插入哈希表包括计算键的哈希值,将其映射到索引,并在该索引处插入键值对。删除元素包括根据关键字查找索引,然后删除该索引处的元素。-一旦确定了索引,就可以访问存储在哈希表中该索引处的元素。-一旦确定了索引,就会将键值对插入该索引处的哈希表中。-需要注意的是,在删除元素时,一些哈希表实现还可以执行额外的操作来保持哈希表的效率和完整性,例如重新哈希或重新组织元素。-从哈希表中删除元素需要查找与键对应的索引,就像在查找过程中一样。-一旦找到索引,就可以从哈希表中删除该索引处的元素。

m0_74997241的博客 1357

STM32CubeMx配置串口使用printf函数打印数据(HAL库开发)

HAL库开发串口,打印printf

m0_58832575的博客 6286

亚马逊商品评论爬取与情感分析实战:Python+BeautifulSoup高效解析(附反爬技巧)

本文详细介绍了使用Python和BeautifulSoup库高效爬取亚马逊商品评论并进行情感分析的完整实战流程。文章从环境搭建、核心代码编写入手,重点讲解了如何通过设置请求头、添加延迟等防封策略应对反爬机制,确保数据抓取的稳定性。最后,利用TextBlob库对评论文本进行情感分析,并通过可视化图表直观展示产品口碑,为电商选品与市场调研提供数据支持。

weixin_29046611的博客 1164

哈希表基本操作

哈希表是不用通过比较数值的查找方法,相当便利,建立了数值与存储地址的联系,但是everything都不可能那么完美,它存在冲突,解决冲突的方法:线性探测、那个平方(就是1的平方,-1的平方,2的平方,-2的平方.....)还有一个随机数法,但我觉的前两种更靠谱, 上代码了!   #include&lt;iostream&gt; #include&lt;stdio.h&gt; #include...

小渣渣的博客 1451

Win10或Win8下ObjectARX2015 Wizard向导创建项目失败解决方法

[原创]objectARX 2015 Wizard安装向导在Win8/win10下无法创建项目的解决方法总结 by edata @2017-5-1 objectARX 2015 Wizard安装向导在Win8/win10下无法创建项目的解决方法 因为Win8/Win10对系统盘(默认c:)使用了高级权限管理,所以在此盘下操作文件的修改工作都需要管理员权限才行。 基于这个原因,导致非管理员安

edata的博客 7027

剑指Offer学习记录——(五)哈希表

第五章学习了有关哈希表的知识与面试题。哈希表的插入、删除和访问的时间复杂度都是,非常高效,因此面试经常会使用到它。基于哈希表和其他数据结构,可以设计出许多更高效复杂的数据结构,比如LRUCache。如果哈希表的键的取值有限,那么可以用数组替代哈希表。这样写的代码更简洁。而且在需要排序的场景中,由于数组的下标本身就有序,所以在遍历给数组写值时,就已经排了序。将时间复杂度从直接降为。哈希表经常用来记录字符出现的次数、位置等信息。

2504_90319931的博客 1565

小红书私信接口与Hook技术实战:微信跳转卡片的合规与破解之道

本文深入探讨了小红书私信接口与Hook技术的实战应用,重点解析了微信跳转卡片的合规使用与破解方法。通过官方私信接口的合规玩法与Xposed框架的Hook技术对比,为开发者提供了技术选型指南和实战建议,帮助实现高效的用户跳转与转化。

weixin_30399821的博客 730

128、点云配准与ICP:经典配准算法与深度学习配准

上周调试一台双臂协作机器人,左手持结构光相机扫描桌面上的随机堆叠工件,右手准备执行抓取。问题出在“对齐”这一步——相机扫描得到的点云和CAD模型点云之间差了大约15度的旋转,导致抓取姿态计算出来直接怼到桌面上。我第一反应是“ICP跑一下不就行了”,结果跑了三分钟,误差纹丝不动,甚至越迭代越发散。后来查了日志才发现,初始位姿给得太离谱,ICP直接掉进了局部最优。这个场景太典型了——很多人以为点云配准就是调个ICP库函数,实际工程里坑比想象中多得多。今天这篇笔记,咱们把点云配准这件事从头捋一遍。

sundong_81的博客 42

【Redis 源码】3dict字典数据结构

Redis 使用双散列表机制来支持自动扩容。当散列表的负载因子(已使用的槽位数除以总的槽位数)超过一定阈值时,Redis 会创建一个新的更大的散列表,并逐步将旧散列表中的条目迁移到新的散列表中。这样做有两个好处:首先,它可以避免在高负载下一次性重新散列整个表所带来的性能影响;其次,它确保了散列表的负载因子保持在一个合理的水平,从而保持了良好的性能。

qq_17821591的博客 2021

把 SAP ABAP ALE 与 IDoc 玩明白:从架构、配置到排错的一套闭环方法

本文介绍了SAP集成中ALE与IDoc的核心概念与实战应用。ALE作为SAP分布式应用框架,通过异步消息机制实现系统间数据交换,其三层架构隔离业务与传输细节。IDoc作为标准化消息容器,包含控制、数据和状态记录。文章详细解析了配置要点(端口、伙伴参数)、处理流程(Process Code)、排错工具(BD87、WE09)及同系统测试方法,并提供了发送程序代码骨架。通过架构认知→配置→开发→运维的完整路径,帮助读者掌握ALE/IDoc的实际操作技能。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 221

数据结构与算法之字典和散列表

//字典 function Dictionary(){ this.items = {}; } Dictionary.prototype={ set:function(key,value){ this.items[key]=value; ...

weixin_30877181的博客 85

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

数据结构-字典

往往不做集合的并、交、差运算,而经常需要判定某个元素是否在给定集合中,并且对集合作插入、删除操作。 把字典定义为名字-属性对的组合,根据问题的不同,可以为名字和属性赋予不同的意义。 典型的字典组织方式有线性表、跳表、散列表 字典的抽象数据类型: const int DefaultSize=26 template <class Name,class Attribute&...

303

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Redis~哈希(Hash)类型的数据结构之字典

table属性:是一个数组,数组中的每个元素都是一个指向dict.h/dictEntry结构的指针,每个 dictEntry结构保存着一个键值对size属性:记录了哈希表的大小,也即是table数组的大小used属性:则记录了哈希表目前已有节点(键值对)的数量sizemask属性:的值总是等于size-1,这个属性和哈希值一起决定一个键应该被放到table数组的哪个索引上面下图展示了一个大小为4的空哈希表(没有包含任何键值对)

2501_90256640的博客 1084

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

集合、哈希表、字典

1、集合 ArrayList方法 使用前提:引用System Collections命名空间 如何使用:ArrayList.al=new ArrayList(); //先实例化 其中常用的方法: 2.哈希表 Hashtable方法 哈希表以键值对的形式存值 key-键;value-值。 使用前提:引用命名空间System.Collections; 如何使用:Hashtable ht = new Hashtable(); //先实例化 3.字典 Dctionary方法 使用前...

杨思默 476

10、开链法解决散列表保存字典的碰撞问题

function HashTable(){ this.table = new Array(137); this.hashFunc = hashFunc; this.showDistro = showDistro; this.buildChains = buildChains; this.put = put; this.get = get; } function put(key, da

大宇的专栏 564

字典树(Trie/前缀树)

Trie 字典树 前缀树

good good study, day day up! 7867

❤️实现、冲突和散列函数❤️ 算法图解:第五章:散列表

散列函数是这样的函数,即无论你给它什么数据,它都还你一个数字。 如果用专业的术语来表达的话,我们会说,散列函数“将输入映射到数字”。

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 715

哈希表实现(C语言)

哈希表能够提供快速的插入、删除和查找操作,其时间复杂度平均情况下接近常数时间,即 O(1)。这段代码创建了一个哈希表,并插入了四个键值对,其中"apple"和"apricot"具有相同的哈希值。然后,它搜索了所有的键,并删除了一个键值对。最后,它销毁了哈希表。请注意,这个例子是一个简单的实现,没有处理所有可能的边缘情况,如内存不足、空指针等。在实际应用中,你可能需要添加更多的错误检查和异常处理。现在,让我们使用上述代码来创建一个哈希表,并执行插入、查找和删除操作,特别是演示如何处理哈希冲突。

qq_40844444的博客 1079

python 实现哈希表算法

哈希表算法,也称为散列表算法,是一种根据关键字(Key)和值(Value)直接进行访问的数据结构。它通过哈希函数(Hash Function)将关键字映射到表中的一个位置,以便快速查找、插入和删除操作。哈希表是一种通过哈希函数组织数据,以支持快速插入和查找操作的数据结构。哈希函数的设计目标是减少哈希冲突,即不同的关键字映射到同一个位置的情况。

luthane的博客 921

基础数据结构(二):字典树、并查集、堆、哈希表、字符串的哈希方式、STL的常见容器及其接口

基础数据结构(二):字典树、并查集、堆、哈希表、字符串的哈希方式、STL的常见容器及其接口

CS_boy的博客 1223

抽象数据类型——映射(python)

抽象数据类型——映射,就是键-值关联的无序集合,如python中的字典数据类型。 在“字典”中,通过给定的Key可以很快查找并返回对应的Value,因此为了实现快速查找,最好采用散列表的方法。 通过散列表实现“字典”: class HashTable: def __init__(self): self.size = 11 #设置散列表含有11个槽 self.slots = [None] * self.size #保存键的列表 self.data =

y4ngy1的博客 500

哈希表在Leetcode中的用法

在刷算法题时,如果你需要一个哈希结构,无脑先用或。因为算法题通常最看重时间效率,O(1) 的性能优势是巨大的。只有当题目有明确要求(比如“按字母顺序输出所有独特的单词”)时,你才需要考虑使用有序的map或set。

kanhao100的博客 701

【堆,哈希表,集合】

文章目录heapq模块操作堆的使用——264. 丑数 II哈希表enumerate()函数语法参数集合定义创建基本操作添加元素移除元素清空集合判断元素是否在集合/字典中存在 heapq模块 Python对堆这种数据结构进行了模块化,我们可以通过调用heapq模块来建立堆这种数据结构,同时heapq模块也提供了相应的方法来对堆做操作。 操作 heap = [] #创建一个空堆 heappush(heap,item) #往堆中插入一条新的值 item = heappop(heap) #从堆中弹出最小值 item

qq_44925830的博客 151
上一篇: 栈操作和进制转换
下一篇: 数据结构知识--关于图的创建及其应用,打印其深度遍历、广度遍历结果
c_programj
博客等级 码龄7年 68粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值