【发布时间】:2021-05-25 14:42:15
【问题描述】:
我创建了一个 Node 类和一个 LinkedList 类:
class Node:
def __init__(self, item):
self.item = item
self.next = None
class LinkedList:
def __init__(self):
self.last_node = Node(0)
self.start_node = self.last_node
def add(self, item):
new_node = Node(item)
new_node.next = None
self.last_node.next = new_node
self.last_node = new_node
return new_node
我想实现一种方法来递归返回链表的长度。 所以我添加了一个新的实例变量(i)来维护当前节点。 这是带有 len 函数的最终代码:
class LinkedList:
def __init__(self):
self.last_node = Node(0)
self.start_node = self.last_node
self.i = self.start_node
def add(self, item):
new_node = Node(item)
new_node.next = None
self.last_node.next = new_node
self.last_node = new_node
return new_node
def len(self):
if self.i.next == None:
return 0
self.i = self.i.next
return 1 + self.len()
l = LinkedList()
head = l.add(1.5)
l.add("3hh")
l.add(5)
l.len()//result is 3
这是(将其保存为实例变量)维护函数需要的临时变量的最佳方式吗?
【问题讨论】:
-
就像注释一样,您可以通过添加方法 def __len__(self): return self.length_function() 使您的类使用 python 长度函数。然后你可以做 len(l) 而不是 l.len()
标签: python recursion linked-list