本文主要是介绍【C语言/数据结构】经典链表OJ习题~第二期——链中寻环,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
🎈🎈🎈欢迎采访小残风的博客主页:残风也想永存-CSDN博客🎈🎈🎈
🎈🎈🎈本人码云 链接:残风也想永存 (FSRMWK) - Gitee.com🎈🎈🎈
有什么疑问,皆可打在评论区下,24小时不定时间进行答疑哦~,下面进入本期的主题——环形链表的求解~
一、环形链表Ⅰ
1.题目展示
2.题目链接
141. 环形链表 - 力扣(LeetCode)
3.思路讲解
4.代码实现
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/
bool hasCycle(struct ListNode *head)
{struct ListNode *slow = head,*fast = head;while(fast && fast ->next){slow = slow->next;fast = fast->next->next;if(fast == slow)return true;}return false;
}
5.扩展问题
a.证明:慢指针走一步,快指针走两步一定可以?
b.证明:快指针走三步、四步、....可行吗?
二、环形链表Ⅱ
1.题目展示
2.题目链接
142. 环形链表 II - 力扣(LeetCode)
3.思路讲解
4.代码实现
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/
struct ListNode *detectCycle(struct ListNode *head){struct ListNode *slow = head,*fast = head;while(fast && fast ->next){slow = slow->next;fast = fast->next->next;if(fast == slow){struct ListNode * cur = head;while(cur){if(cur == slow)return cur;cur = cur->next;slow = slow->next;}}}return false;
}
这篇关于【C语言/数据结构】经典链表OJ习题~第二期——链中寻环的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!