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

相关推荐
疯狂打码的少年7 小时前
单向循环链表 + 尾指针:让插入删除更高效的秘密武器
数据结构·python·链表
️是788 小时前
信息奥赛一本通—编程启蒙(3373:练64.2 图像旋转翻转变换)
数据结构·c++·算法
Bat U8 小时前
Java高阶数据结构|AVL树
数据结构
Xiu Yan8 小时前
Java 转 C++ 系列:STL容器之list
java·开发语言·数据结构·c++·stl·list·visual studio
Mr_pyx9 小时前
【LeetCodeHOT100】 160. 相交链表 —— Java多解法详解
java·数据结构·链表
杨凯凡9 小时前
【016】集合框架总览:List/Set/Map 与线程安全
java·数据结构·list
自我意识的多元宇宙9 小时前
二叉树的遍历和线索二叉树--先序二叉树和后续二叉树
数据结构
im_AMBER9 小时前
Leetcode 159 无重复字符的最长子串 | 长度最小的子数组
javascript·数据结构·学习·算法·leetcode
郝学胜-神的一滴9 小时前
[力扣 105]二叉树前中后序遍历精讲:原理、实现与二叉树还原
数据结构·c++·算法·leetcode·职场和发展
LG.YDX10 小时前
笔试训练48天:mari和shiny(动态规划 - 线性dp)
数据结构·算法