2014-11-06 157 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我们的代码更好