随笔 - 544, 文章 - 0, 评论 - 0, 阅读 - 10459
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DS-链表-0002-判断链表是否有环

Posted on   乔55  阅读(3)  评论(0编辑  收藏  举报

用快慢指针的方法判断链表是否有环

// 判断一个单链表是否有环
// 1、用快慢指针分别指向链表首元结点和次元结点
// 2、遍历链表,让快指针走2步,慢指针走1步
// 3、当快指针变为NULL,说明没有环
// 4、当快慢指针能够相遇,说明有环
bool xxx_hasCicle(myNode* head)
{
	bool ret = false;
	if (head == NULL || head->next == NULL)
	{
		return ret;
	}

	myNode* slow = head;		// 慢指针
	myNode* fast = head->next;	// 快指针
	// 遍历链表
	while (fast != NULL && fast->next != NULL)
	{
		slow = slow->next;
		fast = fast->next->next;
		if (slow == fast)
		{
			ret = true;
			break;
		}
	}
	return ret;
}
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示