2014-11-06 164 views
0

我有以下鏈接列表實現。 printlist()函數有問題。 while循環會產生一個錯誤,說明自身沒有下一個屬性。有沒有更好的方法來寫這個函數?謝謝!!!打印鏈接列表

class Node: 
    def __init__(self, data, next=None): 
    self.data=data 
    def _insert(self, data): 
    self.next=Node(data)  
    def _find(self, data): 
    if self.data==data: 
     return self 
    if self.next is None: 
     return None 
    while self.next is not None: 
     if self.next.data==data: 
     return self.next 
    return None 
    def _delete(self, data): 
    if self.next.data == data: 
     temp=self.next 
     self.next =self.next.next 
     temp=None 
    def _printtree(self): 
    while self: 
     print self.data, 
     self=self.next 
class LinkedList: 
    def __init__(self): 
    self.head=None 
    def insert(self, data): 
    if self.head: 
     self.head._insert(data) 
    else: 
     self.head=Node(data) 
    def find(self, data): 
    if self.head.data==data: 
     return self.head 
    return self.head._find(data) 

    def delete(self, data): 
    if self.head.data==data: 
     head=None 
     return 
    self.head._delete(data) 
    def printtree(self): 
    self.head._printtree() 
+0

你是怎麼稱呼它的?完整的追溯在哪裏?你到目前爲止嘗試解決這個問題? – jonrsharpe 2014-11-06 22:15:04

+1

你的'Node.__ init__'方法中不應該有'self.next = next'嗎? – khelwood 2014-11-06 22:15:14

+0

爲什麼不使用__str__而不是_printtree和printtree? – 2014-11-06 23:16:38

回答

0
  1. 下一個屬性添加到節點的INI方法
  2. 你應該定義的LinkedList的printtree這樣:

    高清printree(個體經營):

    current_node = self.head 
    print current_node.data 
    while current_node.next is not None: 
        print current_node.next.data 
        current_node = current_node.next 
    

加入一個repr方法將使y我們的代碼更好