更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
los_list.h 文件参考

双向链表由内联函数实现 http://weharmonyos.com/openharmony/zh-cn/device-dev/kernel/kernel-small-apx-dll.html 更多...

浏览源代码.

结构体

struct  LOS_DL_LIST
 

类型定义

typedef struct LOS_DL_LIST LOS_DL_LIST
 

函数

LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListInit (LOS_DL_LIST *list)
 
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListAdd (LOS_DL_LIST *list, LOS_DL_LIST *node)
 Insert a new node to a doubly linked list. 更多...
 
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListTailInsert (LOS_DL_LIST *list, LOS_DL_LIST *node)
 Insert a node to the tail of a doubly linked list. 更多...
 
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListHeadInsert (LOS_DL_LIST *list, LOS_DL_LIST *node)
 Insert a node to the head of a doubly linked list. 更多...
 
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListDelete (LOS_DL_LIST *node)
 
LITE_OS_SEC_ALW_INLINE STATIC INLINE BOOL LOS_ListEmpty (LOS_DL_LIST *list)
 Identify whether a specified doubly linked list is empty. | 判断链表是否为空 更多...
 
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListAddList (LOS_DL_LIST *oldList, LOS_DL_LIST *newList)
 Insert a new list to a doubly linked list. 更多...
 
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListTailInsertList (LOS_DL_LIST *oldList, LOS_DL_LIST *newList)
 Insert a doubly list to the tail of a doubly linked list. 更多...
 
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListHeadInsertList (LOS_DL_LIST *oldList, LOS_DL_LIST *newList)
 Insert a doubly list to the head of a doubly linked list. 更多...
 
LITE_OS_SEC_ALW_INLINE STATIC INLINE VOID LOS_ListDelInit (LOS_DL_LIST *list)
 Delete initialize a doubly linked list. | 将指定节点从链表中删除,并使用该节点初始化链表 更多...
 

详细描述

双向链表由内联函数实现 http://weharmonyos.com/openharmony/zh-cn/device-dev/kernel/kernel-small-apx-dll.html

基本概念
    双向链表是指含有往前和往后两个方向的链表,即每个结点中除存放下一个节点指针外,
    还增加一个指向前一个节点的指针。其头指针head是唯一确定的。

    从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点,这种
    数据结构形式使得双向链表在查找时更加方便,特别是大量数据的遍历。由于双向链表
    具有对称性,能方便地完成各种插入、删除等操作,但需要注意前后方向的操作。

双向链表的典型开发流程:
    调用LOS_ListInit/LOS_DL_LIST_HEAD初始双向链表。
    调用LOS_ListAdd/LOS_ListHeadInsert向链表头部插入节点。
    调用LOS_ListTailInsert向链表尾部插入节点。
    调用LOS_ListDelete删除指定节点。
    调用LOS_ListEmpty判断链表是否为空。
    调用LOS_ListDelInit删除指定节点并以此节点初始化链表。 

注意事项
    需要注意节点指针前后方向的操作。
    链表操作接口,为底层接口,不对入参进行判空,需要使用者确保传参合法。
    如果链表节点的内存是动态申请的,删除节点时,要注意释放内存。
版本
作者
weharmonyos.com | 鸿蒙研究站 | 每天死磕一点点
日期
2021-12-7

在文件 los_list.h 中定义.