Linux内核中哈希链表hlist_head

本文深入探讨了Linux内核中的哈希链表hlist_head,将其与图的邻接表进行比较,并提供了多个相关资源链接。讨论了哈希表的概念和在Python中的实现,同时详细介绍了hlist_head结构体、hlist_node结构体的初始化、判断结点状态、插入和删除结点的方法,以及遍历链表的操作。文章末尾提及内核中的rculist.h和待研究的哈希函数部分。
摘要由CSDN通过智能技术生成

https://www.cnblogs.com/tongongV/p/11038991.html

感觉和图的邻接表很像。

哈希表:

https://blog.csdn.net/lovebaby859450415/article/details/79620715

python中字典就是哈希表。

 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

https://blog.csdn.net/hs794502825/article/details/24597773

https://blog.csdn.net/zhanglei4214/article/details/6767288 

https://blog.csdn.net/wei_cheng18/article/details/79821965        哈希桶

include/linux/list.h文件

hlist示意图:

这两个结构体定义在/include/linux/types.h中。

hlist_head结构体

struct hlist_head {
	struct hlist_node *first;//指向链表第一个hlist_node
};

 hlist_node结构体

struct hlist_node {
	struct hlist_node *next, **pprev;//pprev指向上一个结点的next指针
};

hlist_head初始化方法(3种):

/*
 * Double linked lists with a single pointer list head.
 * Mostly useful for hash tables where the two pointer list head is
 * too wasteful.
 * You lose the ability to access the tail in O(1).
 */

#define HLIST_HEAD_INIT { .first = NULL }
#define HLIST_HEAD(name) struct hlist_head name = {  .first = NULL }
#define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值