【问题标题】:get value of node behind the pointer in a singly non circular linkedlist获取单个非循环链表中指针后面的节点值
【发布时间】:2014-08-28 20:35:15
【问题描述】:

问题: 链表 = a,b,c,d,e = node1, node2, node3, node4, node5

我在第 5 个节点上,想要获取第 2 个节点的值(值 = b)。我遍历并没有保存第二个节点的值。现在我在第 5 个节点。无法返回或重新开始。

我有什么方法?


它是一个 c++ singly non-circular linked list不能返回或循环移动方向,节点 1,2,3,4,5

如果我在节点 5 上,我可以将第二个节点设为尾(我在尾 = 5 之前)吗?)我只想通过任何方式获取第二个节点的值。我在想,以某种方式,我可以将第 5 名放在第 2 名之后,或者将第 2 名放在第 5 名之后。然后向前迈出一步。 (因为我可以前进但不能后退)。然后获取第二个节点的值。

如果我知道有 5 个元素。我不能将b 元素作为尾部。此时,我将在第 4 个 e(不再是尾巴)然后我可以前进到第 5 个元素 b(直到我将第 2 个元素变成第 5 个元素才出现)

【问题讨论】:

  • 您始终拥有列表的头部,因此您只需从那里迭代即可到达您想要的节点。
  • 重申不是一种​​选择
  • “无法返回或重新开始。” - 是的。游戏结束。
  • 头,尾?你说的是单链表还是你在说什么?
  • 你能举个具体的例子吗?向您展示如何处理此类案件会更容易。

标签: c++ c list linked-list


【解决方案1】:

这一般来说是不可能的,因为单链非循环列表,定义,没有反向指针。找到第二个元素的唯一可靠方法是从第一个元素开始。

【讨论】:

  • 听起来你的“有声望的前辈”可能没有那么有名气。
  • 单链表可以有超过1个指针?我想如果我们制作 2 个指针,它们之间有 3 个节点的间隙。我们能做到吗?
  • 如果您想要,您可以随时记住以前的值。如果你没有,你现在无能为力。
  • -1。 “搜索所有内存” - 不要。曾经。不便携且不可靠(误报)。
  • @MasoodAhmad,你可以在你的结构中添加任何你想要的指针,但是你对链表的定义必须改变。
【解决方案2】:

坏消息是你无能为力。游戏结束了。这就像在国际象棋中问当你已经被将死时最好的一步是什么。

好消息是,无论你做什么编程任务(好吧,只要它可以被图灵机解决),都有一种编码方法可以防止你得到这样的职位。

记住第二个元素,或者记住根,然后你就可以随时访问它。一些算法会记住最近(以前)的元素,例如这就是您可以从单个链表中删除节点的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多