0
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self, head=None):
self.head = head
def insert(self, node):
if not self.head:
self.head = node
else:
node.next = self.head
self.head = node
def search(self, node):
if self.head == node:
return self.head
else:
if self.head.next:
self.head = self.head.next
return self.search(node)
我有一种感觉,重置头head.next是不完全正确的。如果不是,我的递归函数如何移动到下一个节点?这是链表中递归搜索函数的正确实现吗?
我不是很了解next_node是如何传递给else语句的?你能进一步解释吗? – yesyoukenn 2015-02-10 03:38:56
搜索方法的第二个参数是要检查的下一个节点,即head.next,head.next.next,head.next.next等。当你从课堂外调用next_node时没有,这是一个你需要设置它的信号。顺便说一下,直接比较节点可能不会工作,你需要'如果next_node.data == node.data:return next_node' – peter 2015-02-10 03:43:14
我应该在第一个if if块中添加next_node有效地创建一个新变量,但是由于python范围规则它在方法体内是可见的。 – peter 2015-02-10 03:51:25