Linux内核链表

《内核链表》

内核链表即,我么在一个链表中插入或删除一个数据,都需要自己编写代码,相当的麻烦,怎么解决这个问题呢,为了更加方便的解决这个问题,linux中就产生了内核链表,以后想要在链表中插入数据或删除数据时,只需要调用函数就可以了。

<链表对比>

链表是一种数据结构,他通过指针将一系列的数据节点连接成一条数据链,相对于数组,链表更具有更好地 动态性,建立链表时,无需知道链表的总数量,可以随机分配空间,可以高效的在链表中插入和删除数据,链表的开销主要是访问的顺序性和组织链的损失。

传统双向量表:

指针是指向下一个节点的数据

linux内核链表:
指针指向下一个节点的指针域。

<内核链表使用>

1)内核链表结构

struct list_head

{

    struct list_head *pre,*next;

}

由此可见,链表具有双向功能。

2)内核链表函数

INIT_LIST_HEAD():创建链表

list_add():在表头插入节点

list_add_tail():在链表为插入节点

list_del():删除节点

list_entry():取出节点

list_for_each():遍历节点

<内核链表实现分析>

首先包含头文件<linux/list.h>

使用函数:

INIT_LIST_HEAD() 创建一个列表,接下来就是调用函数 list_add_tail(),旺该节点插入节点。就是这么个原理。

<移植内核链表>

将头文件,和相应的实现代码移植到应用程序中,本身是一个内核的实现代码

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

原文地址:https://www.cnblogs.com/big-devil/p/8589845.html