CsonList链表增加节点删除操作
This commit is contained in:
parent
d9cd0c8d3c
commit
0f8ffa381d
35
src/cson.c
35
src/cson.c
|
@ -686,6 +686,41 @@ CsonList* csonListAdd(CsonList *list, void *obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief CSON链表删除节点
|
||||||
|
*
|
||||||
|
* @param list 链表
|
||||||
|
* @param obj 节点对象
|
||||||
|
* @param freeMem 释放内存
|
||||||
|
* @return CsonList 链表
|
||||||
|
*/
|
||||||
|
CsonList *csonListDelete(CsonList *list, void *obj, char freeMem)
|
||||||
|
{
|
||||||
|
CSON_ASSERT(list, return NULL);
|
||||||
|
|
||||||
|
CsonList head = {0};
|
||||||
|
head.next = list;
|
||||||
|
CsonList *p = &head;
|
||||||
|
CsonList *tmp;
|
||||||
|
while (p->next)
|
||||||
|
{
|
||||||
|
if (p->next->obj && p->next->obj == obj)
|
||||||
|
{
|
||||||
|
tmp = p->next;
|
||||||
|
p->next = p->next->next ? p->next->next : NULL;
|
||||||
|
if (freeMem)
|
||||||
|
{
|
||||||
|
cson.free(tmp->obj);
|
||||||
|
cson.free(tmp);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
p = p->next;
|
||||||
|
}
|
||||||
|
return head.next;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief CSON新字符串
|
* @brief CSON新字符串
|
||||||
*
|
*
|
||||||
|
|
12
src/cson.h
12
src/cson.h
|
@ -228,7 +228,7 @@ extern CsonModel csonBasicListModel[]; /**< 基础类型链表数据模型 */
|
||||||
*/
|
*/
|
||||||
#define CSON_ASSERT(expr, action) \
|
#define CSON_ASSERT(expr, action) \
|
||||||
if (!(expr)) { \
|
if (!(expr)) { \
|
||||||
printf(#expr " assert failed at file: %s, line: %d", __FILE__, __LINE__); \
|
printf(#expr " assert failed at file: %s, line: %d\r\n", __FILE__, __LINE__); \
|
||||||
action; \
|
action; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -368,6 +368,16 @@ void csonFreeJson(const char *jsonStr);
|
||||||
*/
|
*/
|
||||||
CsonList* csonListAdd(CsonList *list, void *obj);
|
CsonList* csonListAdd(CsonList *list, void *obj);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief CSON链表删除节点
|
||||||
|
*
|
||||||
|
* @param list 链表
|
||||||
|
* @param obj 节点对象
|
||||||
|
* @param freeMem 释放内存
|
||||||
|
* @return CsonList 链表
|
||||||
|
*/
|
||||||
|
CsonList *csonListDelete(CsonList *list, void *obj, char freeMem);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief CSON新字符串
|
* @brief CSON新字符串
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue