我正在尝试在链表上找到最后一个值,但最后一个节点没有指向无。节点4没有指向任何节点,所以我如何递归地找到它。
node1 = Node(44)
node2 = Node(220)
node3 = Node(320)
node4 = Node(402)
node2.setNext(node1)
node3.setNext(node2)
node4.setNext(node3)
所以如果我输入找到node4的最后一个值,它应该返回44
答案 0 :(得分: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)
答案 1 :(得分: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())