第一种,使用快慢指针
一个移动一个单位
一个移动两个单位
struct ListNode* middleNode(struct ListNode* head) {
struct ListNode* curr = head ;
struct ListNode* p = head ;
while(p!=NULL && p->next)
{
p = p->next->next;
curr = curr->next;
}
return curr;
}
第二种:正常做法,但是这个可以不需要判断奇偶长度,卡一下取余bug,哈哈哈
struct ListNode* middleNode(struct ListNode* head) {
struct ListNode* curr = head ;
int num = 0;
while(curr)
{
num++;
curr = curr->next;
}
curr = head ;
for(int i=0; i<(num/2) ;i++){
curr = curr->next;
}
return curr;
}