如何递归查找链表中的元素,但最后一个元素不等于None

问题描述 投票:0回答:2

我试图在链表上找到最后一个值,但最后一个节点并不指向任何一个。节点4没有指向任何一个,所以如何递归地找到它。

node1 = Node(44)
node2 = Node(220)
node3 = Node(320)
node4 = Node(402)
node2.setNext(node1)
node3.setNext(node2)
node4.setNext(node3)

所以,如果我输入找到node4的最后一个值,它应该返回44

python linked-list nodes
2个回答
0
投票
n = node1
while n.next() == None:
    n = n.next()
 ... do something ...

当最后一个节点为n时,while循环中断,因此您可以使用n来引用最后一个节点。希望这可以帮助 :)

编辑:如果没有链接到node1的节点,那么当你运行node1.next时它应该返回None。如果你想要一个递归函数来获取最后一个节点,我也不太明白这个问题。

def r(n: linkedlist)
    if n.next() == None:
        return n
    else:
        r(n.next())

1
投票

您的链接列表如下所示:

node4 -> node3 -> node2 -> node1

没有开始,没有结束,你的链表是在真空中。

纠正它看起来像,

linked_list -> node4 -> node3 -> node2 -> node1 -> None

因此,您需要添加命令

node1.setNext(None)

而且,你需要一个用于创建链表的类,比如LinkedList,哪些实例将有一个指向第一个成员的指针。

您可以使用设置此指针的方法实现此类,例如setFirst();然后你将使用这些命令:

my_list = LinkedList()
my_list.setFirst(node4)

或者直接在构造函数中设置这个指针(即在__init__()方法中);然后你将使用这个命令:

my_list = LinkedList(node4)
© www.soinside.com 2019 - 2024. All rights reserved.