首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何找到单链表中的最后一个元素?

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

Stack Overflow用户
提问于 2013-06-29 11:16:18
回答 4查看 18.9K关注 0票数 1

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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-29 11:24:59

如果“最后一个节点”指向其他节点,那么它不是真正的最后一个节点,对吗?更不用说这会延伸甚至有可能打破人们普遍接受的“列表”的定义。

通常情况下,要找到最后一个元素,您需要执行以下操作

代码语言:javascript
运行
复制
Node *current = list.start,
     *next = current.next;

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

print("Last node is " + current->value);

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

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

票数 4
EN

Stack Overflow用户

发布于 2013-06-29 13:24:50

好吧,我想把一个"is_visited“布尔值放到节点上就可以了:

代码语言:javascript
运行
复制
//make sure the counters of all nodes are 0
cur=head_node
cur->visit=1
while( cur->next!=null AND cur->next->visit==0) {
  cur=cur->next
  cur->visit=1
}
//cur points to the last node
票数 0
EN

Stack Overflow用户

发布于 2013-06-29 16:24:38

即使在单链表中,你也可以使用尾部指针。它仍然是一个单链表,但它在查找最后一个节点时避免了O(n=1)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17376325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档