首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >链接列表的节点应该存储谁的地址:具有节点作为字段的其他节点或数据结构?

链接列表的节点应该存储谁的地址:具有节点作为字段的其他节点或数据结构?
EN

Stack Overflow用户
提问于 2018-09-17 01:00:15
回答 2查看 297关注 0票数 1

从理解Linux内核开始

Linux内核定义了list_head数据结构,其唯一的字段next和prev分别表示一个通用双链接列表元素的前向和后向指针。但是,需要注意的是,list_head字段中的指针存储的是其他list_head字段()的地址,而不是包含list_head结构的整个数据结构的地址;参见图3-3 (a)。

为什么list_head字段中的指针存储其他list_head字段的地址,而不是存储包含list_head结构的整个数据结构的地址?

给定指向list_head对象的指针,如何获得包含list_head对象的数据结构(例如“数据结构1")的对象?例如,How can I get the process descriptor from a PID in Linux kernel?

如果是在面向对象语言中,那么list_head字段可能在包含list_head结构的数据结构中是私有的吗?因此,list_head字段中的指针存储包含list_head结构的整个数据结构的地址是否比其他list_head字段的地址更合理?

EN

回答 2

Stack Overflow用户

发布于 2018-09-17 10:31:40

为什么list_head字段中的指针存储其他list_head字段的地址,而不是存储包含list_head结构的整个数据结构的地址?

因为它在逻辑上是正确的,而且更容易实现。您不需要知道迭代列表的类型。也没有将列表头嵌入到任何结构中。当list为空时,它应该指向什么?

给定指向list_head对象的指针,如何获得包含list_head对象的数据结构(例如“数据结构1")的对象?

使用of宏。

票数 2
EN

Stack Overflow用户

发布于 2018-09-17 08:32:09

list_head存储指向下一个/prev列表节点的指针。一个数据结构可以使用多个list_head元素放置在多个列表中。处理代码“知道”这些元素中哪些放在给定的列表中,并且可以使用list_entry将指针从指针恢复到节点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52359598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档