利用快慢指针:
设置两个指针slow和fast,两个指针同时向前走,fast指针每次走两步,slow指针每次走一步,直到fast指针走到最后一个结点时,此时slow指针所指的结点就是中间结点。
public class l链表中间节点 {
public static void main(String[] args){
int[] array = {1,2,3,4,5,6,7,8,9,10,11,12,13};
ListNode head = ListNode.arrayToList(array);
ListNode.printList(head);
findMid(head);
}
private static void findMid(ListNode head) {
ListNode slow = head;
ListNode fast = head;
while(fast.next != null){
if(fast.next.next != null){
fast = fast.next.next;
slow = slow.next;
} else {
slow = slow.next;
}
}
System.out.println(slow.val);
}
}