linux通用链表list实例讲解,linuxlist实例讲解


linux/list.h

linux内核中使用的链表
特点是可以复用,无需反复造轮子.
容易想到的一种链表用法是这样的:
struct list{
    strucu list *next, *prev;
    int priv_data;
};
数据被储存在链表的节点内部 通过next和prev移动来访问各个节点上的priv_data.
这样做的问题在于代码几乎没有复用性,不同的数据存储就需要对应的多种list.

而linux kernel中提出了一种数据包含在节点之外的链表 能很好的解决这个问题.
struct list_head {
    struct list_head *prev, *next;
};

struct list_data {
    struct list_head head;
    int priv_data;
};
数据结构体list_data只需要包含一个链表结构list_head 就可以使用链表的特性.

相关内容