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