AMPS:单向链表源码解读 (八)

2014-11-24 08:28:21 · 作者: · 浏览: 9
}
return NULL;
}
/*****************************************************************
函数名称: SList_Find
功能描述: 在链表中查找指定的结点内容
入参::
void *list 原链表
void *pvData 指定的结点内容
出参:
t_AMPSSList *list
返回值:
void* 找到的结点指针
*****************************************************************/
void* SList_FindData (void *list, void *pvData)
{
t_AMPSSList *slist = (t_AMPSSList*)list;
while (slist)
{
if (slist->pvData == pvData)
{
return slist;
}
slist = slist->poAMPSSListNext;
}
return NULL;
}
/*****************************************************************
函数名称: SList_Free
功能描述: 释放链表
入参::
void *list 原链表
AMPS_LListFreeLinkDataCallback func_ptr 结点处理回调函数,如果结点
的内存需要显式释放,使用此函数达到目的。
出参:
t_AMPSSList *list
返回值:
int
*****************************************************************/
int SList_Free(t_AMPSSList **list, AMPS_LListFreeLinkDataCallback func_ptr)
{
t_AMPSSList *curr = NULL; // pointer to current node
t_AMPSSList *poAMPSSListPrev = NULL; // pointer to previous node
curr = *list;
while (curr)
{
poAMPSSListPrev = curr;
curr = (t_AMPSSList*)curr->poAMPSSListNext;
if (func_ptr)
{
/*释放结点*/
if (func_ptr(&(poAMPSSListPrev->pvData)))
{
return AMPS_ERROR_FAILURE;
}
}
/*if (poAMPSSListPrev->pvData)
{
AMPS_InternalFree(poAMPSSListPrev->
pvData);
}*/
AMPS_InternalFree(poAMPSSListPrev);
}
*list = NULL;
return AMPS_SUCCESS;
}
/*****************************************************************
函数名称: SList_FreeEx
功能描述: 释放链表
入参::
void *list 原链表
AMPS_LListFreeLinkDataCallback func_ptr 结点处理回调函数,如果结点
的内存需要显式释放,使用此函数达到目的。
void* r_pvData 回调函数入参,通过它可以进行在释放前的一些结点操作
出参:
t_AMPSSList *list
返回值:
int
*****************************************************************/
int SList_FreeEx(t_AMPSSList **list, AMPS_LListProcessCallback func_ptr, void* r_pvData)
{
t_AMPSSList *curr = NULL; // pointer to current node
t_AMPSSList *poAMPSSListPrev = NULL; // pointer to previous node
curr = *list;
while (curr)
{
poAMPSSListPrev = curr;
curr = (t_AMPSSList*)curr->poAMPSSListNext;
if (func_ptr)
{
func_ptr(poAMPSSListPrev->pvData, r_pvData);
}
AMPS_InternalFree(poAMPSSListPrev);
}
*list = NULL;
return AMPS_SUCCESS;
}
/*****************************************************************
函数名称: SList_FreeEx
功能描述: 删除链表中指定的结点
入参::
t_AMPSSList **list 原链表
t_AMPSSList *node 待删除结点
AMPS_LListFreeLinkDataCallback func_ptr 结点处理回调函数,如果结点
的内存需要显式释放,使用此函数达到目的。
出参:
t_AMPSSList *list
返回值:
int
*****************************************************************/
int SList_Remove(t_AMPSSList **list, t_AMPSSList *node, A