用python打印链表

用python打印链表,python,singly-linked-list,Python,Singly Linked List,在我的任务中,首先我需要从数组中创建单链表 我的代码: class Node: def __init__(self,data): self.data = data self.next = next class Lista: def __init__(self, lista=None) self.head = None def ispis(self): printval = self.head while printval

在我的任务中,首先我需要从数组中创建单链表

我的代码:

class Node:
   def __init__(self,data):
   self.data = data
   self.next = next

class Lista:
   def __init__(self, lista=None)
      self.head = None
   
   def ispis(self):
      printval = self.head
      while printval .next is not None:
         print(printval.next.data)
         printval = printval.next


if __name__ == '__main__'
   
   L = Lista ([2, "python", 3, "bill", 4, "java"])
   ispis(L)
使用ispis功能,我需要打印链表的元素。但它说“ispis”这个名字并没有定义。无法更改ispis(L)

编辑:下一步从中删除,ISPI(self)移动到Lista类之外

而printvla.下一步不是无:

编辑2:
它表明L是空的,所以它不会打印任何东西。我应该向类节点添加元素吗?

ispis是类中的一个方法。但是您调用该函数时,就好像它是类外的普通函数一样

L.ispis()
至少您已经正确创建了对象。下面是在类内部调用方法的正确方法

L.ispis()

这个问题听起来像是家庭作业。如果讲师试图教您如何创建链表,您需要返回到需要执行的操作:

  • 首次设置节点时,节点只需要数据。通常,下一个指针/值将设置为
    None
    (表示没有下一个成员)
  • 您的
    \uuuu init\uuuu
    方法用于
    列表a
    类需要对其参数进行处理
  • 我相信如果您需要使用
    ispls
    函数对类进行操作,那么该函数可能不应该是
    Lista
    的成员
  • 我认为你的
    ispls
    循环不应该测试它的
    .next
    成员。如果一开始就有一个
    None
    ,这将失败。您应该测试当前实例,而不是它的
    next
    。这样,当您移动到下一个节点时,如果它是
    None
    ,它将退出循环
  • 注意关键字
    next
    。我会避免将其用作类属性。另外,文本
    next
    将只提供内置命令
  • 至少,您希望迭代
    \uuuu init\uuuu
    中的
    lista
    参数,为每个节点创建一个
    节点
    ,为下一个操作保存上一个节点

       if lista is None:
           self.head = None
           return
       prev = None
       for data in lista:
           node = Node(data)
           if prev is None:
               self.head = node
           else:
               prev.next = node
           prev = node     
    
    不过,我相信这也是教练想让你明白的。希望这有帮助


    --B

    ispis
    Lista
    的一种方法。您需要在实例上调用它:
    L.ispis()
    。如果您想像显式传递
    L
    时那样调用它,您可以使用
    Lista.ispis(L)
    (尽管不建议使用此语法)。请重复有关使用类、方法和实例的教程材料。正确的格式是从实例调用实例函数:
    L.ispis()
    I无法更改调用函数。
    ispis(L)
    错误且无法工作。你们必须改变它。我知道,但任务是像那样使用它。谢谢,改变了那个。但它不会打印任何东西。这是你的代码有问题。但这是在类中调用方法的正确方法。问题是我从来没有见过像这样复杂的东西,我甚至不知道如何正确地开始编码。好的,从小处开始,祝你好运!对于链表,您需要注意的是,它是一组数据,带有指向下一部分的指针。如果你把你的作品摆正了,一切都会顺利的。我希望我的片段能有所帮助。谢谢。我设法添加了链表并将其打印出来。现在我有了另一个功能,但我会花一些时间来使用它。