C语言实现链表的标准化操作

假如你的C语言程序里面有很多链表,那么对链表的操作还是每个数据结构对应一组函数吗?这就显得你的代码不够高级了,以下是对双向环状链表操作,实现方法仅仅写了两个,完全可以用你智慧的大脑,续写!

Link.h

#ifndef _LINK_H_
#define _LINK_H_

#define POINT_TEST(STRUCT_TYPE)	\
STRUCT_TYPE *prve;	\
STRUCT_TYPE *next;	\


#ifdef __cplusplus
extern "C"
{
#endif

	struct STemp
	{
		POINT_TEST(struct STemp)
	};

	int Init(void* pNode);
	int AddlinkNode(void* pNode, void* pNext);

#ifdef __cplusplus
}
#endif

#endif // !_LINK_H_

Link.c


#include "Link.h"
#include 

int Init(void* pNode)
{
	if (!pNode) return -1;
	((struct STemp*)pNode)->next = pNode;
	((struct STemp*)pNode)->prve = pNode;
	return 0;
}

int AddlinkNode(void* pNode, void* pNext)
{
	if (!pNode || !pNext) return -1;

	((struct STemp*)pNext)->next = 
		((struct STemp*)pNode)->next;

	((struct STemp*)pNext)->next->prve = pNext;
	((struct STemp*)pNode)->next = pNext;
	((struct STemp*)pNext)->prve = pNode;
	return 0;
}

熟练对宏的使用,深入对指针的理解,将有助于你的代码水平的提升

你可能感兴趣的:(C/C++,链表,数据结构,算法)