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

📄 list.c

📁 用C写的十分精巧的XML实现程序库
💻 C
字号:
/** \file  
* \brief C list implementation
*
* (C) 2007 GEC All rights reserved.
*
* \author Deng Yangjun
* \date 2006-1-28
*/ #include <memory.h>#include <stdlib.h>#include <assert.h>#include <stdio.h>#include "list.h"#ifdef __cplusplusextern "C"{#endif/*!
*\brief create a new list strut
*\return new list pointer, you MUST release it by destroyList(listPtr list)
*/listPtr createList(){	listPtr newList = malloc(sizeof(list));	assert(NULL!=newList);	memset(newList, 0, sizeof(list));	return newList;}/*!
*\brief create a new list strut
*\param list [in,out]list that will be add the new link
*\param data [in]value of the new link
*\return the new link 's point, can't free it, please free it by destroyList or removeLink 
*/nodePtr  addLink(listPtr list,  void *data){	nodePtr newLink = malloc(sizeof(node));		assert(newLink!=NULL);	assert(list!=NULL);	//printf("new link\n");		memset(newLink, 0, sizeof(node));	if( NULL == list->first) // empty list, add the link as first link	{		list->first = list->last = newLink;	}	else	{		assert(list->last!=NULL);				list->last->next = newLink;		list->last = newLink;	}		newLink->data = data;	return newLink;}/**
* \brief destroy a list
* \param listPtrPtr [in,out] list that will be destroyed, after the function, the list's pointer will be NULL
* \param onFreeData [in] register user data free hander function. when destroy link, it will be invoked.
* if you don't need to free user data, you can set it NULL
*/void destroyList(listPtr *listPtrPtr,freeUserData onFreeData){		nodePtr next;	listPtr list; 	assert(listPtrPtr!=NULL);		list = *listPtrPtr;	assert(list!=NULL);	while(list->first)	{		next =list->first->next;		if(onFreeData !=NULL)		{			onFreeData(list->first->data);		}				free(list->first);		//printf("free link\n");		list->first = next;	}	free(list);	*listPtrPtr = NULL;}#ifdef __cplusplus}; //end of extern "C" {#endif

⌨️ 快捷键说明

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