WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
Raw双向链表

结构体

struct  TagCstlRawListNode
 
struct  CstlRawList
 

类型定义

typedef struct TagCstlRawListNode CstlRawListNode
 

函数

int32_t CstlRawListInit (CstlRawList *list, CstlFreeFunc freeFunc)
 初始化链表
 
int32_t CstlRawListClear (CstlRawList *list)
 链表节点清空,删除所有节点
 
int32_t CstlRawListDeinit (CstlRawList *list)
 链表去初始化
 
bool CstlRawListEmpty (const CstlRawList *list)
 检查链表是否为空
 
size_t CstlRawListSize (const CstlRawList *list)
 获取链表中节点个数
 
int32_t CstlRawListPushFront (CstlRawList *list, CstlRawListNode *node)
 在链表头部插入节点
 
int32_t CstlRawListPushBack (CstlRawList *list, CstlRawListNode *node)
 在链表尾插入节点
 
int32_t CstlRawListInsert (const CstlRawListNode *curNode, CstlRawListNode *newNode)
 在指定节点前插入节点
 
int32_t CstlRawListPopFront (CstlRawList *list)
 从链表头部POP一个节点
 
int32_t CstlRawListPopBack (CstlRawList *list)
 从链表中尾部POP一个节点
 
int32_t CstlRawListErase (CstlRawList *list, CstlRawListNode *node)
 删除链表中指定节点。
 
CstlRawListNodeCstlRawListFront (const CstlRawList *list)
 返回头节点指针
 
CstlRawListNodeCstlRawListBack (const CstlRawList *list)
 返回尾节点指针。
 
CstlRawListNodeCstlRawListPrev (const CstlRawList *list, const CstlRawListNode *node)
 获取当前节点的前一个节点。
 
CstlRawListNodeCstlRawListNext (const CstlRawList *list, const CstlRawListNode *node)
 获取当前节点的后一个节点。
 
int32_t CstlRawListSort (CstlRawList *list, CstlDataCmpFunc cmpFunc)
 根据用户定义的排序函数,对链表节点进行排序。
 
CstlRawListNodeCstlRawListNodeFind (const CstlRawList *list, CstlMatchFunc nodeMatchFunc, uintptr_t data)
 根据用户定义的节点匹配函数,搜索用户想要的节点。
 

详细描述

类型定义说明

◆ CstlRawListNode

链表头

函数说明

◆ CstlRawListBack()

CstlRawListNode * CstlRawListBack ( const CstlRawList list)

返回尾节点指针。

描述:仅用于访问尾节点,不会删除该节点;如果链表为NULL,则返回NULL。
参数
list[IN] 链表
注意
如果用户传入的参数不合理则一定返回NULL,所以用户需要使用正确的参数。
返回值
非NULL尾节点的指针
NULL链表为NULL
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListClear()

int32_t CstlRawListClear ( CstlRawList list)

链表节点清空,删除所有节点

描述:链表节点清空,删除所有节点,调用户注册的free函数释放用户私有资源,回归链表初始化后的状态。
参数
list[IN] 链表
返回值
CSTL_OK0,链表清空成功。
#ERRNO_CSTL_INPUT_INVALID,即0xa030002。表明链表为NULL,操作失败。
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListDeinit()

int32_t CstlRawListDeinit ( CstlRawList list)

链表去初始化

描述:链表去初始化:删除所有节点,调用户注册的free函数释放用户私有资源,去注册钩子函数。但链表头还在。
参数
list[IN] 链表
返回值
CSTL_OK0,链表去初始化成功。
#ERRNO_CSTL_INPUT_INVALID,即0xa030002。表明链表为NULL,操作失败。
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListEmpty()

bool CstlRawListEmpty ( const CstlRawList list)

检查链表是否为空

参数
list[IN] 待检查的链表
返回值
true1,链表为空或者无数据。
false0,链表不为空。
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListErase()

int32_t CstlRawListErase ( CstlRawList list,
CstlRawListNode node 
)

删除链表中指定节点。

描述:\n
1.list为NULL且node在链表中时,仅将node从链表中摘除。 2.list非NULL且node在链表中时,从链表中摘除该节点,如果在初始化时注册了free函数,还会调该钩子函数释放用户资源。
参数
list[IN] 链表
node[IN] 待删除的节点
返回值
CSTL_OK0,链表删除成功。
#ERRNO_CSTL_INPUT_INVALID,即0xa030002。表明参数不合法,操作失败
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListFront()

CstlRawListNode * CstlRawListFront ( const CstlRawList list)

返回头节点指针

描述:仅用于访问头节点,不会删除该节点;如果链表为NULL,则返回NULL。
参数
list[IN] 链表
注意
如果用户传入的参数不合理则一定返回NULL,所以用户需要使用正确的参数。
返回值
非NULL头节点的指针
NULL链表为NULL
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListInit()

int32_t CstlRawListInit ( CstlRawList list,
CstlFreeFunc  freeFunc 
)

初始化链表

描述:初始化链表,按需注册用户数据中的私有资源释放函数。本函数不会申请资源。
注意

1:rawlist模块中的链表节点由用户进行封装并申请内存,rawlist仅做链表的维护,其资源释放应由用户在freeFunc中完成。
2:用户在添加数据时,传递给rawlist的参数为CstlRawListNode节点,因此rawlist传递给用户freeFunc的参数也是CstlRawListNode节点。
参数
list[IN] 链表。
freeFunc[IN] 用户资源释放函数。
返回值
CSTL_OK0,链表初始化成功。
#ERRNO_CSTL_INPUT_INVALID,即0xa030002。表明链表为NULL,初始化失败。
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListInsert()

int32_t CstlRawListInsert ( const CstlRawListNode curNode,
CstlRawListNode newNode 
)

在指定节点前插入节点

参数
curNode[IN] 指定的节点
newNode[IN] 待插入的节点
返回值
CSTL_OK0,链表插入成功。
#ERRNO_CSTL_INPUT_INVALID,即0xa030002。表明参数不合法,操作失败。
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListNext()

CstlRawListNode * CstlRawListNext ( const CstlRawList list,
const CstlRawListNode node 
)

获取当前节点的后一个节点。

描述:获取当前节点的后一个节点指针。如果当前节点是尾节点,则返回NULL。
参数
list[IN] 链表
node[IN] 当前节点
注意
如果用户传入的参数不合理则一定返回NULL,所以用户需要使用正确的参数。
返回值
非NULL当前节点的后一个节点
NULL尾节点的下一个节点为空
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListNodeFind()

CstlRawListNode * CstlRawListNodeFind ( const CstlRawList list,
CstlMatchFunc  nodeMatchFunc,
uintptr_t  data 
)

根据用户定义的节点匹配函数,搜索用户想要的节点。

描述:根据用户定义的节点匹配函数,搜索用户想要的节点。
注意

1、将从链表头往后遍历,对每个节点依次调用匹配函数,直到找到第一个匹配的节点或者遍历到链表尾部结束。
2、此处用户输入的匹配函数钩子,其第一个入参地址是每个待搜索的节点值,入参类型是(CstlRawListNode *)。
3、用户在匹配钩子内部的实现,需根据节点地址偏移到用户结构体信息再进行匹配比较。 4、如果用户传入的参数不合理则一定返回NULL,所以用户需要使用正确的参数。
参数
list[IN] 链表
nodeMatchFunc[IN] 匹配函数钩子
data[IN] 关键信息
返回值
非NULL查询成功,返回节点指针
NULL查询失败,未找到匹配的节点
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListPopBack()

int32_t CstlRawListPopBack ( CstlRawList list)

从链表中尾部POP一个节点

描述:从链表中移除尾节点。如果在初始化时注册了free函数,还会调该钩子函数释放用户资源。\n
如果链表为空,则不做任何事情。
参数
list[IN] 链表
返回值
CSTL_OK0,链表尾部弹出成功。
#ERRNO_CSTL_INPUT_INVALID,即0xa030002,表明参数不合法,操作失败
#ERRNO_CSTL_ELEMENT_EMPTY,即0xa030001,表明list不是空指针但是无数据,操作失败。
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListPopFront()

int32_t CstlRawListPopFront ( CstlRawList list)

从链表头部POP一个节点

描述:从链表中移除头节点。如果在初始化时注册了free函数,还会调该钩子函数释放用户资源。\n
如果链表为空,则不做任何事情。
参数
list[IN] 链表
返回值
CSTL_OK0,链表头部弹出成功。
#ERRNO_CSTL_INPUT_INVALID,即0xa030002。表明参数不合法,操作失败
#ERRNO_CSTL_ELEMENT_EMPTY,即0xa030001。表明list不是空指针但是无数据,操作失败。
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListPrev()

CstlRawListNode * CstlRawListPrev ( const CstlRawList list,
const CstlRawListNode node 
)

获取当前节点的前一个节点。

描述:获取当前节点的前一个节点指针。如果当前节点是头节点,则返回NULL。
参数
list[IN] 链表
node[IN] 当前节点
注意
如果用户传入的参数不合理则一定返回NULL,所以用户需要使用正确的参数。
返回值
非NULL当前节点的前一个节点
NULL头节点的前一个节点为空
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListPushBack()

int32_t CstlRawListPushBack ( CstlRawList list,
CstlRawListNode node 
)

在链表尾插入节点

参数
list[IN] 链表
node[IN] 待插入的节点
返回值
CSTL_OK0,链表尾部插入成功。
#ERRNO_CSTL_INPUT_INVALID,即0xa030002。表明链表是NULL或者node为NULL,操作失败。
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListPushFront()

int32_t CstlRawListPushFront ( CstlRawList list,
CstlRawListNode node 
)

在链表头部插入节点

参数
list[IN] 链表
node[IN] 待插入的节点
返回值
CSTL_OK0,链表头部插入成功。
#ERRNO_CSTL_INPUT_INVALID,即0xa030002。链表为NULL,操作失败。
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListSize()

size_t CstlRawListSize ( const CstlRawList list)

获取链表中节点个数

参数
list[IN] 链表
返回值
链表节点个数
  • cstl_rawlist.h:该接口声明所在的头文件。

◆ CstlRawListSort()

int32_t CstlRawListSort ( CstlRawList list,
CstlDataCmpFunc  cmpFunc 
)

根据用户定义的排序函数,对链表节点进行排序。

描述:根据用户定义的排序函数,对链表节点进行排序,排序顺序按排序函数定义实行。
注意

1、此处用户输入的排序函数钩子,其两个入参为两个待比较的节点值,入参类型是(CstlRawListNode *)。
2、用户在排序函数内部的实现,需根据节点地址偏移到用户结构体信息再进行排序比较。
参数
list[IN] 链表
cmpFunc[IN] 排序函数钩子
返回值
CSTL_OK排序成功
CSTL_ERROR排序失败
#ERRNO_CSTL_INPUT_INVALID,即0xa030002。表明参数不合法,操作失败
  • cstl_rawlist.h:该接口声明所在的头文件。