打印链表

时间:2014-11-06 22:08:17

标签: python printing linked-list

我有以下链接列表实现。 printlist()函数存在问题。 while循环正在转换一个错误,即self旁边没有属性。有没有更好的方法来编写这个功能?谢谢!!!

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()  

1 个答案:

答案 0 :(得分:0)

  1. 将下一个属性添加到Node的ini方法
  2. 你应该用这种方式定义LinkedList的printtree:

    def printree(self):

    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
    
  3. 添加 repr 方法会让您的代码更好