您的位置:首页 > 其它

单链表之判断一个单链表中是否有环

2015-10-19 12:39 357 查看
判断一个单链表中是否有环:

/**
* 判断一个单链表中是否有环 这里也是用到两个指针。如果一个链表中有环,也就是说用一个指针去遍历,是永远走不到头的。
* 因此,我们可以用两个指针去遍历,一个指针一次走两步 ,一个指针一次走一步,如果有环,两个指针肯定会在环中相遇。时间复杂度为O(n)
*/
public static boolean hasCycle(Node head) {
// 判空是首先应该考虑的问题
if (head == null)
return false;
Node fast = head; // 快指针每次前进两步
Node slow = head; // 慢指针每次前进一步

while (fast != null && fast.next != null) {
fast = fast.next.next;
slow = slow.next;
// 每移动一次都要进行比较,直到快指针等于满指针为止。
if (fast == slow) { // 相遇,存在环
return true;
}
}
return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: