查找链表的中间节点

Find middle node of linked list

本文关键字:节点 中间 链表 查找      更新时间:2023-10-16

>我在链表上运行了这个函数,元素按该顺序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的,它正在增加一个节点,因为元素的数量是奇数。意义。

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