Linux中双向链表介绍

一. 双向链表

每个节点都有2个指针:一个指向前一个节点、另一个指向后一个节点。

因此可以从任意一个节点开始,双向遍历整个链表;

双向链表节点由三部分组成:数据、前驱指针、后继指针;

二. 双向链表API

list_add() //将新节点添加到双向链表头部

list_add_tail() //将新节点添加到双向链表尾部

list_del() //删除节点

list_for_each_entry() //遍历节点

2.1 void list_add(struct list_head *new, struct list_head *head);

参数:new_node:新结点指针,head:头结点指针

2.2 void list_del(struct list_head *entry);

参数:是一个有效的结点指针;

功能:调用了__list_del(entry->prev, entry->next);

把当前结点的上个结点和下个结点作为参数传给 __list_del,删除了自己

2.3 list_for_each_entry(pos, head, member)

参数:

Pos: 要用作循环计数器的结构体类型指针

Head: 链表头结点指针

Member: 结构中 struct list_head 的成员名称

参考:

https://cloud.tencent.com.cn/developer/article/2517385

相关推荐
Darling噜啦啦3 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
小小工匠4 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
玖玥拾4 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
Qres8214 天前
算法复键——树状数组
数据结构·算法
牛油果子哥q5 天前
并查集(DSU)超精讲,路径压缩、按秩合并、万能模板、连通性判定、最小生成树与刷题实战全解
数据结构·c++·最小生成树·并查集
凌波粒5 天前
LeetCode--491.递增子序列(回溯算法)
数据结构·算法·leetcode
疯狂成瘾者5 天前
Java 集合 LinkedList 详解:链表结构、常用方法和队列使用
java·开发语言·链表
WL学习笔记5 天前
单项不带头不循环链表
数据结构·链表
小糯米6015 天前
JS 数组
数据结构·算法·排序算法
小欣加油5 天前
leetcode3612 用特殊操作处理字符串I
数据结构·c++·算法·leetcode·职场和发展