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

相关推荐
zhim0018 小时前
数据结构笔记(上)(看这亿点就够了)
数据结构
only-qi18 小时前
leetcode24两两交换链表中的节点 快慢指针实现
数据结构·算法·链表
sin_hielo19 小时前
leetcode 110
数据结构·算法·leetcode
执着25919 小时前
力扣hot100 - 199、二叉树的右视图
数据结构·算法·leetcode
cpp_250119 小时前
P8448 [LSOT-1] 暴龙的土豆
数据结构·c++·算法·题解·洛谷
lcj251119 小时前
深入理解指针(4):qsort 函数 & 通过冒泡排序实现
c语言·数据结构·算法
仰泳的熊猫20 小时前
题目1453:蓝桥杯历届试题-翻硬币
数据结构·c++·算法·蓝桥杯
爱吃生蚝的于勒20 小时前
【Linux】线程概念(一)
java·linux·运维·服务器·开发语言·数据结构·vim
Pluchon20 小时前
硅基计划4.0 算法 简单模拟实现位图&布隆过滤器
java·大数据·开发语言·数据结构·算法·哈希算法
静听山水20 小时前
Redis核心数据结构-list
数据结构·redis·list