专题**-Linux内核链表


链表简介

链表是一种常用的数据结构,它通过指针将一系列数据节点连接成一条数据链。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。Linux内核链表为双向循环链表~


Linux内核链表函数清单

创建链表:INIT_LIST_HEAD()
插入节点:list_add()
尾插节点:list_add_tail()
删除节点:list_del()
取出节点:list_entry()
遍历链表:list_for_each()


Linux内核链表实现

struct list_head {
    struct list_head *next,*prev;
};

#define LIST_HEAD_INIT(name) {&(name), &(name)}
#define LIST_HEAD(name) struct list_head name=LIST_HEAD_INIT(name)

static inline void INIT_LIST_HEAD(struct list_head *list)
{   
    list->prev = list;
    list->next = list;
}

static inline void list_add \
(struct list_head *new, struct list_head *head)
{   
    __list_add (new, head, head->next);
}

static inline void __list_add \
(struct list_head *new,
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值