查找链表的中间节点

时间:2013-09-27 00:33:15

标签: c++

我在按顺序使用元素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,因为有奇数个元素,所以它会增加一个节点。有道理。

1 个答案:

答案 0 :(得分:0)

一个是指向 head 列表开头的指针。 两个也指向列表的开头。然后你基本上只推进两个并返回它,这是第二个元素。