用python打印linkedlist

2024-05-13 00:40:20 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的代码:

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是空的,所以它不会打印任何东西。我应该向类节点添加元素吗


Tags: selfnone元素编辑datainitdef数组
2条回答

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

  1. 首次设置节点时,节点只需要数据。通常,下一个指针/值将设置为None(表示没有下一个成员)
  2. 你的Lista类的__init__方法需要对它的参数做一些处理
  3. 我相信如果需要使用ispls函数对类进行操作,那么该函数可能不应该是Lista的成员
  4. 我认为你的ispls循环不应该测试它的.next成员。如果您有一个None开始,这将失败。您应该测试当前实例,而不是它的next。这样,当您移动到下一个节点时,如果它是None,它就会退出循环
  5. 注意关键字next。我会避免将其用作类属性。另外,文本next只会为您提供内置命令

至少,您希望迭代__init__中的lista参数,为每个参数创建一个Node,为下一个操作保存上一个节点

   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是类中的一个方法。但是您调用该函数时,就好像它是类外的普通函数一样

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

L.ispis()

相关问题 更多 >