问题:Linkedlist=a、b、c、d、e=节点1、节点2、节点3、节点4、节点5
我在第5个节点上,想得到第2个节点的值(值=b
(。我遍历并没有保存第二个节点的值。现在我在第五节点。无法返回或重新开始。
我有什么办法?
它是一个c++singly non-circular linked list
,其中I不能返回或在圆形方向上移动,节点1,2,3,4,5
如果我在节点5上,我可以将第二个节点作为尾部(我以前在尾部=5(吗?(<-我能在5号的时候不后退或前进吗?我只想通过任何方式得到第二个节点的值。我在想,我可以把第五名放在第二名之后,或者把第二名放在第一名之后。然后向前走一步。(因为我可以前进,但不能后退(。然后得到第二个节点的值。
如果我知道有5个元素。我不能把b
元素做成尾巴吗。此时,我将在第四个e
(它将不再是尾部(,然后我可以前进到第五个元素b
(直到我使第二个元素变成第五个元件时才出现(
这通常是不可能的,因为单链接的非圆形列表,根据定义,没有返回指针。查找第二个元素的唯一可靠方法是从第一个元素开始。
坏消息是你什么都做不了。游戏结束了。这就像在国际象棋中问,当你已经被将死时,最好的招式是什么。
好消息是,无论你做什么编程任务(好吧,只要它可以通过图灵机器解决(,都有一种方法可以对它进行编码,以防止你得到这样的位置。
记住第二个元素,或者记住根,然后你就可以访问它。有些算法会记住最近的(以前的(元素,例如,这就是你从单个链表中删除节点的方法。