当前位置: 首页 > 知识库问答 >
问题:

如何在单链表(一次遍历)中从尾部获得第n个节点?

宋耀
2023-03-14

所以我从一次考试中得到了这个问题。

在单链表中,如何从尾部获得第n个节点?

getNodeFromTail(Node head, int x) {

}
getNodeFromTail(Node head, int x) {
    int length = 0;
    Node headdupe = head;
    while (headdupe.next != NULL) {
         headdupe = headdupe.next;
         length++;
    }
    int a = length--;
    for (int y = 0; y < a; y++) {
         head = head.next;
    }
    return head;
}

这样对吗?有没有更好的解决办法?

共有1个答案

羊渝
2023-03-14
  1. 创建2个指向第一个节点的指针
  2. x
  3. 前进一个指针
  4. 并排推进两个指针,直到列表中的另一个指针到达终点。
  5. 您的指针进一步向后指向X最后一个元素
 类似资料:
  • 我用C语言编写了双重链接列表的代码,它从头到尾的遍历很好,但从尾(end)到头的遍历陷入了无限循环,只打印最后一个节点的数据,我不知道出了什么问题。

  • [采访问题] 编写一个函数,该函数将在一次传递中从单个链表整数的尾部(或尾部)返回第5个元素,然后提供一组针对该函数的测试用例。 这类似于问题:如何从单链表的末尾找到第n个元素?,但是我还有一个额外的要求,我们应该只遍历链接列表一次。 这是我的解决方案: 我只遍历链表一次,并使用隐式递归堆栈。另一种方法是有两个指针:快指针和慢指针,快指针是比慢指针快的k个指针。哪一个看起来更好?我认为有两个指针的

  • 我想做一个模板,在那里我可以输入一个索引,它会给我在那个索引的类型。我知道我可以用来实现,但我想自己实现它。例如,我想这样做, ...它会给出位置的类型(因为数组是从0开始索引的)。我怎么能这么做?多谢了。

  • 问题内容: 我尝试编写xpath表达式,以使我的测试不会因小的设计更改而中断。因此,我编写了自己的表达式,而不是Selenium IDE生成的表达式。 这是一个问题: 此表达式根本不起作用。名为“问题”的输入节点分布在整个页面上。他们不是兄弟姐妹。 我尝试使用中间表达式,但是也失败了。 这就是为什么我认为Seleniun具有错误的XPath实现。 根据XPath文档,位置谓词必须按 节点 集中的位

  • 我有一个双链接列表,看起来像: 当我使用迭代器和下面的代码遍历列表时,输出会精确打印上面写的内容。 但是,我希望在遍历列表时跳过空节点,以便它只打印: 我无法让我的代码做到这一点。这是我迄今为止所想出的。 问题是我得到了一个NoTouchElementException错误,但我不知道如何修复它。我猜是因为当我到达第二个空虚拟节点时,我试图跳过它,但没有其他节点可以跳到。 我的问题是,如何更改代码

  • 问题内容: 首先,我是Python的新手,确实搜索了答案,但是没有运气。到目前为止,我发现的内容只返回一行,就像下面的代码一样。我尝试了其他解决方案,例如,但总是只能返回一行。 我有一个名为包含数据行的文件: 我有以下代码: 在这种情况下,它仅打印 “这是第四行”。 我知道为什么,但是如何从这里拿走并打印第4、7、10、13行…? 问题答案: 的返回值是一个迭代器(因此是可迭代的),因此您可以将其