C语言5行代码逆转单向链表

本文介绍了一种高效、易理解的单向链表逆转方法,避免了重新创建链表的复杂性和边界问题,通过以原链表表头为中心,依次删除并向左添加节点的方式实现。特别注意处理空链表情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个逆转单向链表的代码应该算是比较高效,容易理解的代码,
刚开始我的思路与网上大多数人一样,想着重新造一个链表,但写起来太麻烦了,且有许多边界问题需要解决,想想就心烦,写了半天没写出来,且这个题目的输入和打印函数是服务器提供,因此不能再在本机上进行测试,对边界条件的把握就更加难了。复杂+没有测试数据,只能自己换个思路解决了。最后在测试的时候,有一个测试点没过——空链表,于是查了下什么叫空链表,哈哈,添加一行代码过了这个测试点。

//具体思路:从原链表开始,以表头为中心向右删除一个节点
//然后把这个节点加在链表的前面,
List Reverse( List L )
{	
	if (L == NULL) return NULL;	//这一步用来应付空链表的情况。										
	//初始化要操作的节点,q始终在原链表的表头,p随着删除节点向右移动
//t随着左侧新增节点向左移。
	List q =L;										
	List p =L->Next;
	List t =L;										
	while(q->Next)
	{
		q->Next = p->Next;//删除节点
		p->Next = t;//把节点增加到左侧
		t = p;//t向左移动一个节点
		p = q->Next;//p向右移动一个节点			
	}
	return t;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值