有一个单向链表,链表中可能出现“环”,那么,如何用程序来判断该链表是否为有环链表呢?
/**
* @Author: subd
* @Date: 2019/9/4 7:02
*/
public class SingleLinkNode {
/**
* 链表节点
*/
private static class Node {
int data;
Node next;
public Node(int data) {
this.data = data;
}
}
/**
* 判断是否有环
*
* @param head 链表头结点
* @return
*/
public static boolean isCycle(Node head) {
Node p1 = head;
Node p2 = head;
int step = 0;
while (p2 != null && p2.next != null) {
p1 = p1.next;
p2 = p2.next.next;
if (p1 == p2) {
return true;
}
}
return false;
}
public static void main(String[] args) {
Node node1 = new Node(5);
Node node2 = new Node(3);
Node node3 = new Node(2);
Node node4 = new Node(7);
Node node5 = new Node(6);
node1.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
node5.next = node2;
System.out.println(isCycle(node1));
}
}
285

被折叠的 条评论
为什么被折叠?



