C语言------寻找链表中间节点

文章介绍了在链表中使用快慢指针的方法来找到中间节点,无论链表节点数量是奇数还是偶数,通过控制slow和fast指针的速度差异,可以确定链表中间位置。

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

该题目选自力扣。

解题思路:设置slow,fast两个结构体指针变量,slow每往后挪动一个节点,fast往后挪动两个节点,当fast==NULL || fast->next==NULL 时,slow所指向的节点就是中间节点。

节点为奇数个时:

节点为偶数个时:

struct ListNode* middleNode(struct ListNode* head)
{
	//判断head是否为空,虽然题目中所述时head不为空,但最好要判断一下养成习惯
	if (head == NULL || head->next == NULL)
		return head;
	struct ListNode* slow = head, * fast = head;
	while (fast->next)
	{
		slow = slow->next;//slow每次往后进一个节点
		fast = fast->next->next;//fast每次往后进两个节点
		if (fast == NULL)//当链表节点个数为奇数个时,fast最终等于NULL,所以必须要在此设置判断条件
			break;
	}
	return slow;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值