/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* middleNode(struct ListNode* head)
{
int i = 0;
struct ListNode * p = head;
struct ListNode *q = head;
while(p)
{
p = p->next;
i++;
}
int result = i/2;
while(result--)
{
q = q->next;
}
return q;
//力扣展现的就这么多
}
我知道有更好的办法,但是这个基础方法都还没有理解。
就像图中所提及的,我认为我返回的第二个结点为什么却返回的第三个节点,我想知道我哪步的理解错了,为什么返回的不是第二个而是第三个
(我在本问题中要的不是正确答案 单纯的希望有人来修正我的逻辑错误,万分感谢)
while(result--) 先判断后减减 ,共执行2次,1,2,3,4,5 移动两次,q指向了3
另外是你是不是认为在1之前还有一个节点head?不是的head就是指向1