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

相关推荐
乐观勇敢坚强的老彭3 小时前
C++信奥静态数组和动态数组
数据结构·c++·算法
旖旎夜光4 小时前
LeetCode 991: 坏了的计算器(贪心算法) —— 题解
数据结构·c++·算法·leetcode·贪心算法
旖旎夜光4 小时前
LeetCode 553:最优除法(贪心算法) —— 题解
数据结构·c++·算法·leetcode·贪心算法
雾喔5 小时前
算法练习7
java·数据结构·算法
XiaoYu1__7 小时前
数据结构进阶·其二:用简洁的树状数组处理动态区间问题及两种常见变形
数据结构·c++·笔记·算法·树状数组
Keven_117 小时前
算法札记:二叉树前序、中序、后序遍历及对应序列重要性质
数据结构·算法·深度优先
如此这般英俊7 小时前
手搓Claude Code-第十章 system_prompt
数据结构·人工智能·python·语言模型·自然语言处理·prompt
旖旎夜光8 小时前
LeetCode 738:单调递增的数字(贪心算法) —— 题解
数据结构·c++·算法·leetcode·贪心算法
旖旎夜光8 小时前
LeetCode 1262:可被三整除的最大和 (贪心算法)—— 题解
数据结构·c++·算法·leetcode·贪心算法
影视飓风TIM9 小时前
C++ STL 完整入门笔记[9]:C++ 仿函数、priority_queue与STL算法底层笔记
数据结构·c++·笔记