哈希表-二级指针

来源:互联网 发布:数据的重要性 编辑:程序博客网 时间:2024/05/22 23:27

哈希表是一种数据的存储和查找方式

数据的大小是字节描述,那么数据的存储就是一个利用空间的过程

数据量很大时候,几百G,几亿条,查找起来是多么费事,当然你可以排序等算法简化,但依然于事无补


生活中的存储 中药店的药箱根据药材分类存放,药箱内再放个九宫格

根据算法得到分类  根据key计算哈希值,得到一级存放位置,如果内部有多个数据,则挨个比较


从乱序中找到一对一关系,再从遗漏的部分,挨个比较,就是哈希的思想


链式哈希:

基础块 是数据key对应的value,value一般为void*,这样可以转换为任意的一般为结构体指针

每次插入都需要申请malloc内存

哈希值值对应存储 对链表的插入删除,动态大小

哈希表 可以固定大小,malloc内存,内部存放链表的头指针

指向哈希表 二级指针


二级指针

数组定义和指针基本一样,只不过在于指针指向大小不同

char a[10];char *a,sizeof(a)的值不同,不过在声明不可见范围,a是一样的仅指针大小,例如a作为参数传参

数组和指针只是赋值方式不同,都可以通过下表访问一定范围地址的内容,

当指针指向数组时候,可以理解数组就是指针,指针就是数组

此外,指针可以指向变量和函数


二级指针就是指向了一个指针的指针,被指向的指针可能是函数,数组,变量

当被指向的指针是数组时候,那么就是哈希表了

char* a[]是指针数组,那么指向数组内第一个元素的指针就是二级指针

char **b = &a[0];那么b[0]就是a[0],b指向一个指针数组


哈希表首先指向一个指针数组,数组内指针是链表的首地址









0 0
原创粉丝点击