⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 llist.c

📁 Net-CDP-0.09 cdp相关源包
💻 C
字号:
/* * $Id: llist.c,v 1.1 2005/07/20 13:44:13 mchapman Exp $ */#include <system.h>cdp_llist_t *cdp_llist_new(cdp_dup_fn_t dup_fn, cdp_free_fn_t free_fn) {	cdp_llist_t *result;	assert(dup_fn);	assert(free_fn);	result = CALLOC(1, cdp_llist_t);	result->dup_fn = dup_fn;	result->free_fn = free_fn;	return result;}cdp_llist_t *cdp_llist_dup(const cdp_llist_t *llist) {	cdp_llist_t *result;	cdp_llist_iter_t iter;	assert(llist);	result = cdp_llist_new(llist->dup_fn, llist->free_fn);	for (iter = cdp_llist_iter(llist); iter; iter = cdp_llist_next(iter))		cdp_llist_append(result, (llist->dup_fn)(cdp_llist_get(iter)));	return result;}voidcdp_llist_append(cdp_llist_t *llist, void *x) {	cdp_llist_item_t *item;	assert(llist);	item = CALLOC(1, cdp_llist_item_t);	item->x = x;	if (llist->tail)		llist->tail->next = item;	else		llist->head = item;	llist->tail = item;	llist->count++;}voidcdp_llist_transfer(cdp_llist_t *llist, cdp_llist_t *src) {	assert(llist);	assert(src);	assert(llist->dup_fn == src->dup_fn);	assert(llist->free_fn == src->free_fn);	if (llist->tail)		llist->tail->next = src->head;	else		llist->head = src->head;	llist->tail = src->tail;	llist->count += src->count;	src->head = src->tail = NULL;	src->count = 0;}voidcdp_llist_free(cdp_llist_t *llist) {	cdp_llist_iter_t iter, next;	assert(llist);	for (iter = cdp_llist_iter(llist); iter; iter = next) {		next = cdp_llist_next(iter);		(*llist->free_fn)cdp_llist_get(iter);		FREE((cdp_llist_item_t *)iter);	}	FREE(llist);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -