关于通用链表的研究之侵入式链表(内核链表)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32740675/article/details/81370002

    侵入式链表,即是将链表连接域使用另一个结构体存放的链表结构体,与平常链表的不同之处在于,不用重新编写增删改查函数,只需要将连接域链表结构体当作需要被”侵入”的结构体的成员即可。图解如下:
    (图片是从Processon中画了再保存的,所以显示可能不太对…)
    这里写图片描述

  知道了使用原理,然后再看使用内核链表的接口和宏定义部分:引用这里,如果表示嫌弃的可以自己下载linux源码,在src/linux/list.h处
  https://blog.csdn.net/terrysg/article/details/46676995
  https://blog.csdn.net/yong199105140/article/details/8234089?locationNum=4&fps=1

  如果被这些漫天飞的基础介绍所困惑也是件痛苦的事,所以在明白基本原理后,希望大家能动手按自己的理解实现一个,然后再使用查看效果,再和别人的介绍以及linux内核中的实现做比较,如果有差,再做改进。

  我对侵入式链表的理解如下:
  1.首先要实现侵入式链表最重要的就是实现一种类型无关的循环双向链表,就是上面提到的list_head,当然,名字是自便的。
  2.实现类型无关的循环双链表后,再尝试嵌入性工作,即将他嵌入到一般的结构体。然后进行观察,怎样才能使他们良好的工作,需要定义哪些接口用于初始化,以及使用等。粗略可以分为类型无关接口和类型有关接口
  3.列举出循环双链表中常有的接口,并在该条件下良好的实现:
  创建 添加(插入,拼接等) 删除 遍历(查找,显示等) 移动…… 
  这里我只列举出了我暂时所想到的而已,只能作为参考。

猜你喜欢

转载自blog.csdn.net/qq_32740675/article/details/81370002