我正在编写一个名为LList的类,并在该类中定义了几个方法。我在编写一种以反向顺序打印链表的方法时遇到问题。
class Node(object): def __init__(self, data=None, nextNode=None): self.data = data self.nextNode = nextNode class LList(object): def __init__(self, head=None): self.head = head self.size = 0 def insert(self, node): if not self.head: self.head = node self.size += 1 else: # set new nodes pointer to old head node.nextNode = self.head # reset head to new node self.head = node self.size +=1 def getSize(self): return self.size def printLL(self): mynode = self.head c = 0 while mynode: c += 1 print(mynode.data, c) mynode = mynode.nextNode #a method for class that prints list backwards. def reverse(self): #main program MyList = LList() MyList.insert(Node("NJ")) MyList.insert(Node("NR")) MyList.insert(Node("OH")) # Use my print method MyList.printLL() #print in reverse MyList.reverse()
小智.. 5
class Node(object): def __init__(self, data=None, next_node=None): self.data = data self.next = next_node def ReversePrint(head): if head == None: return else: ReversePrint(head.next) print(head.data)
让我们以链接列表为例:1-> 2-> 3遍历代码,为ReversePrint函数提供了指向链接列表的开头(即1)的链接。我们看到head不等于null,因此我们进行移动到代码的第二行,这是对head.next的第一次递归调用,即2。再次,我们看到这个新的“ head”不等于null,因此我们进行了第二次递归调用,这一次传递了包含3的节点。我们看到这个新的“ head”不等于null,因此我们对head.next进行了第三次递归调用,在这种情况下为null。所以我们返回,因为我们击中了基本情况。现在返回第二个递归调用,然后移至递归调用之后的代码行,即print语句。我们打印3。由于此递归调用现已完成,
class Node(object): def __init__(self, data=None, next_node=None): self.data = data self.next = next_node def ReversePrint(head): if head == None: return else: ReversePrint(head.next) print(head.data)
让我们以链接列表为例:1-> 2-> 3遍历代码,为ReversePrint函数提供了指向链接列表的开头(即1)的链接。我们看到head不等于null,因此我们进行移动到代码的第二行,这是对head.next的第一次递归调用,即2。再次,我们看到这个新的“ head”不等于null,因此我们进行了第二次递归调用,这一次传递了包含3的节点。我们看到这个新的“ head”不等于null,因此我们对head.next进行了第三次递归调用,在这种情况下为null。所以我们返回,因为我们击中了基本情况。现在返回第二个递归调用,然后移至递归调用之后的代码行,即print语句。我们打印3。由于此递归调用现已完成,