我在按顺序使用元素1 2 3 4 5
的链接列表上运行此函数。当我打印返回节点的数据成员时,我的输出是2
。为什么输出2
?当我将two = two->next
行放在if
范围内时,虽然我得到了3
。我不明白为什么我的写作方式会2
。
SLNode* mid(SLNode *head) {
SLNode *one = head;
SLNode *two = head;
while(one != nullptr) {
one = one->next;
two = two->next;
if(one != nullptr) {
one = one->next;
//two = two->next;
}
}
return two;
}
EDIT ::
所以我猜这个列表实际上是5 4 3 2 1
,因为有奇数个元素,所以它会增加一个节点。有道理。
答案 0 :(得分:0)
一个是指向 head 列表开头的指针。 两个也指向列表的开头。然后你基本上只推进两个并返回它,这是第二个元素。