这里用的是先遍历一遍求长度,再遍历一遍求中间的结点;
当然,快慢指针法也是可以的。
class Solution {
public:
ListNode* middleNode(ListNode* head) {
int num=0;
ListNode* cur=head;
while(cur!=nullptr){
num+=1;
cur=cur->next;
} // num 为 5 或者 2
num= (num%2==0? (num/2+1) : num/2+1);
cout<<num<<endl;
int i=0;
for(int i=1;i<num;i++){
head=head->next;
}
return head;
}
};