It really isn't hard. Here is a quick example:
Code:
typedef struct listNode
{
	struct listNode *next;
} listNode;

listNode *firstEntry = NULL;

listNode *createNode()
{
	listNode *foo = (listNode *)malloc(sizeof(listNode));
	foo->next = NULL;
	
	if(!firstEntry)
	{
		firstEntry = foo;
	}
	else
	{
		listNode *entry = firstEntry;
		while(entry)
		{
			if(!entry->next)
				entry->next = foo;
			
			entry = entry->next;
		}
	}
	
	return foo;
}

void removeNode(listNode *node)
{
	if(firstEntry == node)
	{
		firstEntry = node->next;
		free(node);
	}
	else 
	{
		listNode *entry = firstEntry;
		listNode *pentry = NULL;
		while(entry)
		{
			if(entry == node)
			{
				pentry->next = entry->next;
				free(node);
				
				return;
			}
			
			
			pentry = entry;
			entry = entry->next;
		}
	}
}




Shitlord by trade and passion. Graphics programmer at Laminar Research.
I write blog posts at feresignum.com