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 <stdio.h>

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;
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值