AMPS:单向链表源码解读 (七)
::
t_AMPSSList** list 原链表
出参:
NA
返回值:
t_AMPSSList* 处理之后的链表
*****************************************************************/
t_AMPSSList* SList_Last(t_AMPSSList *list)
{/*
if (NULL != list)
{ */
if (list)
{
while (list->poAMPSSListNext)
{
list = list->poAMPSSListNext;
}
}
//}
return list;
}
/*****************************************************************
函数名称: SList_Alloc
功能描述: 分配新的链表结点,并赋值
入参::
void* pvData 结点
出参:
NA
返回值:
void* 处理之后的链表
*****************************************************************/
void* SList_Alloc(void* pvData)
{
t_AMPSSList* new_list = NULL;
new_list = AMPS_InternalMalloc(sizeof(t_AMPSSList));
if(NULL == new_list)
{
printf("=>>>>>>>>>>>>>>>>>>>>> malloc failed.\n\n\n\n\n\n\n\n");
return NULL;
}
new_list->pvData = pvData;
new_list->poAMPSSListNext = NULL;
new_list->poAMPSSListPrev = NULL;
return (void*)new_list;
}
/*****************************************************************
函数名称: SList_RemoveKey
功能描述: 删除链表中的指定结点
入参::
void** list 原链表
void* pvData 待删除结点
AMPS_LListCompareCallback compare 结点比较回调函数
出参:
void** list
返回值:
int
*****************************************************************/
int SList_RemoveKey(void** list,void* pvData,AMPS_LListCompareCallback compare)
{
t_AMPSSList** slist = (t_AMPSSList**)list;
t_AMPSSList *list_ptr = (t_AMPSSList*)*slist;
while (list_ptr)
{
/*使用用户自定义的回调函数比较结点,相等,则从链表中删除*/
if (AMPS_LLIST_KEYS_ARE_EQUAL == compare(list_ptr->pvData,pvData))
{
SList_Remove(slist, (void*)list_ptr, NULL);
break;
}
list_ptr = list_ptr->poAMPSSListNext;
}
return 0;
}
/*****************************************************************
函数名称: SList_Search
功能描述: 在链表中查找符合条件的结点
入参::
t_AMPSSList *list 原链表
AMPS_LListCompareCallback func_ptr 结点查找回调函数
void *src_data 指定的查找条件
出参:
void** list
返回值:
t_AMPSSList* 找到的结点指针
*****************************************************************/
t_AMPSSList* SList_Search (t_AMPSSList *list, AMPS_LListCompareLinkDataCallback func_ptr, void *src_data)
{
while (list)
{
if (!func_ptr(src_data, list->pvData))
{
break;
}
list = list->poAMPSSListNext;
}
return list;
}
/*****************************************************************
函数名称: SList_Find
功能描述: 在链表中查找指定的结点
入参::
t_AMPSSList *list 原链表
t_AMPSSList *node 指定的结点
出参:
t_AMPSSList *list
返回值:
t_AMPSSList* 找到的结点指针
*****************************************************************/
t_AMPSSList* SList_Find (t_AMPSSList *list, t_AMPSSList *node)
{
while (list)
{
if (list == node)
{
return list;
}
list = list->poAMPSSListNext;