跳转至

list

list 模块提供双向链表容器,支持链表节点的插入、删除与遍历操作。

Class Summary

OHOS::List

双向链表模板类,实现双向链表数据结构,提供添加、删除、插入、清空、弹出和获取链表大小等基本功能

  • 构造:无
  • 成员函数

    接口名称 功能简述
    Front 获取链表头节点数据
    Back 获取链表尾节点数据
    PushBack 在链表末尾插入数据
    PushFront 在链表头部插入数据
    PopBack 弹出链表末尾数据
    PopFront 弹出链表头部数据
    Insert 在指定节点前插入数据
    Remove 删除指定数据节点
    Clear 删除链表中所有节点
    Head 获取链表头节点地址
    Tail 获取链表尾节点地址
    Begin 获取链表起始节点地址
    End 获取链表结束节点地址
    Next 获取指定节点的下一个节点地址
    IsEmpty 判断链表是否为空
    Size 获取链表大小
  • 使用包含头文件#include "gfx_utils/list.h"

  • 声明头文件middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils/list.h
  • 公有运算符:无
  • 继承关系:HeapBase
  • 嵌套类型:无
  • 模板形参typename T(链表存储的数据类型)

Functions

OHOS::List

Front

const T Front() const

功能说明

  • 核心用途:获取双向链表头节点所存储的数据
  • 使用场景:需要读取链表首个元素值时调用
  • 调用者需确保链表非空,否则行为未定义

返回值

  • 返回类型:const T

返回链表头节点数据

返回值 触发场景
头节点数据 链表非空时返回首节点存储的数据

Back

const T Back() const

功能说明

  • 核心用途:获取双向链表尾节点所存储的数据
  • 使用场景:需要读取链表末尾元素值时调用
  • 调用者需确保链表非空,否则行为未定义

返回值

  • 返回类型:const T

返回链表尾节点数据

返回值 触发场景
尾节点数据 链表非空时返回末尾节点存储的数据

PushBack

void PushBack(T data)

功能说明

  • 核心用途:在双向链表末尾插入一个新节点,存储指定数据
  • 使用场景:向链表尾部追加数据时调用
  • 插入后链表大小自增 1

入参

名称 参数类型 详细说明 约束取值范围
data T 待插入的数据 由模板类型 T 决定

PushFront

void PushFront(T data)

功能说明

  • 核心用途:在双向链表头部插入一个新节点,存储指定数据
  • 使用场景:向链表头部插入数据时调用
  • 插入后链表大小自增 1

入参

名称 参数类型 详细说明 约束取值范围
data T 待插入的数据 由模板类型 T 决定

PopBack

void PopBack()

功能说明

  • 核心用途:弹出双向链表末尾节点并释放其内存
  • 使用场景:移除链表尾部元素时调用
  • 链表为空时调用不执行任何操作;弹出后链表大小自减 1

PopFront

void PopFront()

功能说明

  • 核心用途:弹出双向链表头部节点并释放其内存
  • 使用场景:移除链表头部元素时调用
  • 链表为空时调用不执行任何操作;弹出后链表大小自减 1

Insert

void Insert(ListNode<T>* node, T data)

功能说明

  • 核心用途:在指定节点前插入一个新节点,存储指定数据
  • 使用场景:需要在链表中间位置插入数据时调用
  • 插入后链表大小自增 1

前置条件

  • 入参 node 不为 nullptr,且 node->prev_ 不为 nullptr
  • node 必须为当前链表中的有效节点

入参

名称 参数类型 详细说明 约束取值范围
node ListNode* 指向链表中待插入位置的后继节点 不为 nullptr,且 node->prev_ 不为 nullptr
data T 待插入的数据 由模板类型 T 决定

Remove

ListNode<T>* Remove(ListNode<T>* node)

功能说明

  • 核心用途:删除链表中指定节点并释放其内存
  • 使用场景:移除链表中指定元素时调用
  • 删除后链表大小自减 1

前置条件

  • 链表不为空
  • 入参 node 不为 nullptr,且 node->prev_node->next_ 均不为 nullptr

入参

名称 参数类型 详细说明 约束取值范围
node ListNode* 指向待删除的链表节点 不为 nullptr,且 prev_/next_ 不为 nullptr

返回值

  • 返回类型:ListNode<T>*

返回被删除节点的下一个节点地址

返回值 触发场景
next 指针 成功删除节点,返回被删除节点的后继节点地址
&head_ 链表为空或入参无效时返回哨兵头节点地址

Clear

void Clear()

功能说明

  • 核心用途:删除双向链表中所有节点并释放内存
  • 使用场景:清空链表全部元素时调用
  • 清空后链表大小重置为 0

ListNode<T>* Head() const

功能说明

  • 核心用途:获取双向链表头节点地址
  • 使用场景:需要从链表头部开始遍历时调用
  • 返回第一个有效数据节点的地址

返回值

  • 返回类型:ListNode<T>*

返回链表头节点地址

返回值 触发场景
头节点地址 返回链表第一个数据节点的指针

Tail

ListNode<T>* Tail() const

功能说明

  • 核心用途:获取双向链表尾节点地址
  • 使用场景:需要从链表尾部访问数据时调用
  • 返回最后一个有效数据节点的地址

返回值

  • 返回类型:ListNode<T>*

返回链表尾节点地址

返回值 触发场景
尾节点地址 返回链表最后一个数据节点的指针

Begin

ListNode<T>* Begin() const

功能说明

  • 核心用途:获取双向链表起始节点地址,用于正向遍历
  • 使用场景:作为迭代器起点遍历链表时调用
  • 返回第一个有效数据节点的地址

返回值

  • 返回类型:ListNode<T>*

返回链表起始节点地址

返回值 触发场景
起始节点地址 返回链表第一个数据节点的指针

End

const ListNode<T>* End() const

功能说明

  • 核心用途:获取双向链表结束节点地址,用于遍历终止判断
  • 使用场景:作为迭代器终止标志遍历链表时调用
  • 返回哨兵头节点地址,表示遍历结束位置

返回值

  • 返回类型:const ListNode<T>*

返回链表结束节点地址

返回值 触发场景
哨兵头节点地址 返回链表内部哨兵节点的指针,表示遍历终止位置

Next

ListNode<T>* Next(const ListNode<T>* node) const

功能说明

  • 核心用途:获取指定节点的下一个节点地址
  • 使用场景:正向遍历链表时获取后继节点
  • 入参为 nullptr 时返回 nullptr

入参

名称 参数类型 详细说明 约束取值范围
node const ListNode* 指向当前链表数据节点的指针 可为 nullptr

返回值

  • 返回类型:ListNode<T>*

返回指定节点的下一个节点地址

返回值 触发场景
下一节点地址 node 不为 nullptr 时返回后继节点指针
nullptr node 为 nullptr 时返回空指针

IsEmpty

bool IsEmpty() const

功能说明

  • 核心用途:判断双向链表是否为空
  • 使用场景:在执行弹出、删除等操作前检查链表状态
  • 不修改对象状态(const 成员函数)

返回值

  • 返回类型:bool

返回链表是否为空

返回值 触发场景
true 链表为空
false 链表非空

Size

uint16_t Size() const

功能说明

  • 核心用途:获取双向链表的大小(节点数量)
  • 使用场景:需要获知链表元素个数时调用
  • 不修改对象状态(const 成员函数)

返回值

  • 返回类型:uint16_t

返回链表大小

返回值 触发场景
0 链表为空
1~65535 链表中的节点数量

Structures

ListNode

template<typename T>
class ListNode : public HeapBase {
public:
    ListNode<T>* prev_;
    ListNode<T>* next_;
    T data_;
};

成员说明

成员名称 数据类型 描述
prev_ ListNode* 指向前驱节点的指针
next_ ListNode* 指向后继节点的指针
data_ T 节点存储的数据