如何找到单链表中的最后一个元素?

Gau*_*jan 1 linked-list data-structures

在单向链表中,我们知道最后一个节点的next指向的是null,这样我们就可以通过遍历找到它。

如果单链表的最后一个节点指向某个中间节点,那么我们如何找到最后一个节点?

Pat*_*lis 5

如果“最后一个节点”指向其他某个节点,那么它实际上并不是最后一个节点,不是吗?更不用说这会延伸并可能打破“列表”的普遍接受的定义。

通常要找到最后一个元素,您会执行类似的操作

Node *current = list.start,
     *next = current.next;

while (next != null)
{
    current = next;
    next = current.next;
}

print("Last node is " + current->value);
Run Code Online (Sandbox Code Playgroud)

但是,这假设您的“最后一个节点”实际上指向 null。否则你会陷入无限循环。

将指针保留为列表的最后一个节点以及第一个节点通常是一种很好的做法,因此这是一个简单的解决方案,不依赖于指向 null 的最后一个节点。