0

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;
}

编辑::

所以我猜这个列表实际上5 4 3 2 1是一个额外的节点,因为有奇数个元素。说得通。

4

1 回答 1

0

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

于 2013-09-27T00:37:34.787 回答