给定一个带有头结点 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
思路:
先求链表的长度(size),用链表长度除以2,再写一个引用从头开始,走长度/2步。即可
代码要求:
/**
* Definition for singly-linked list.
* * public class ListNode {
* * int val;
* * ListNode next;
* * ListNode(int x) { val = x; }
* * }
* */
代码实现:
public class LinkedListTest{
static class ListNode{
int val;
ListNode next;
public ListNode(int val) {
this.val=val;
}
}
public ListNode middleNode(ListNode head) {
int steps=size(head)/2;
ListNode cur=head;
for(int i=0;i<steps;i++) {
cur=cur.next;
}
return cur;
}
public int size(ListNode head) {
int size=0;
ListNode cur=head;
while(cur!=null) {
size++;
cur=cur.next;
}
return size;
}
}