有一个单向链表,链表中可能出现“环”,那么,如何用程序来判断该链表是否为有环链表呢?
/** * @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)); } }