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

相关推荐
揽星河..1 小时前
【初阶数据结构】常见的排序算法
数据结构·排序算法·1024程序员节
YLCHUP2 小时前
【模拟&STL】题解:AT_abc203_e [ABC203E] White Pawn_基础算法_数据结构_STL模板库_AtcoderABC_C++算法竞赛
数据结构·c++·算法·leetcode·动态规划·哈希算法·近邻算法
啊啊啊啊啊!!!!2 小时前
【c++】⽤哈希表封装myunordered_map和myunordered_set
数据结构·哈希算法·散列表
(●—●)橘子……2 小时前
力扣 第525场周赛 练习理解
数据结构·python·学习·算法·leetcode
Tt有了t2 小时前
Redis的数据结构
数据结构·数据库·redis
東隅已逝,桑榆非晚3 小时前
map和set的使用
数据结构·c++·笔记·学习
2601_970703833 小时前
除湿机原理研究报告:一台机器在物理上能走多远
大数据·数据结构·算法·数据库架构·推荐算法
若亦_3 小时前
排序>>选择排序
数据结构·算法·排序算法
重生之小比特3 小时前
【算法拾光】前缀和|一维前缀和 + 二维前缀和
数据结构·算法
Shaoshing4 小时前
LeetCode100 283.移动零
java·数据结构·算法·leetcode