- 论坛徽章:
- 0
|
int list_delete(lnode_t **phead ,void *pdata,cmp_func_t cmp,free_func_t free_data)
{
if(*phead == NULL || pdata == NULL || cmp == NULL)
return FAILED;
lnode_t *ptmp = *phead;
lnode_t *pprev = *phead;
while(ptmp != NULL)
{
//if是命中后的处理,只有一个地方是返回SUCCESS
if(cmp(ptmp->pdata,pdata) == 0)
{
if(ptmp == *phead)
{
*phead = ptmp->pnext;
}
else
{
pprev->pnext = ptmp->pnext;
}
free_data(ptmp->pdata);
free(ptmp);
return SUCCESS;
}
//这两句在while里面
pprev = ptmp;
ptmp = ptmp->pnext;
}
return FAILED;
}
以上是 链表函数,哪位大哥能给加个锁 ,有while 和 if 就不会加了 ,要求精确到语句
我是这么干的 ,头说不行
原来的函数改名,然后新函数调用原来的函数。
int list_delete(lnode_t **phead ,void *pdata,cmp_func_t cmp,free_func_t free_data)
{
int ret;
pthread_mutex_lock();
ret = list_delete_single_thread(phead, pdata, cmp, free_data);
pthread_mutex_unlock();
return ret;
} |
|