用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)
错误且无法工作。你们必须改变它。我知道,但任务是像那样使用它。谢谢,改变了那个。但它不会打印任何东西。这是你的代码有问题。但这是在类中调用方法的正确方法。问题是我从来没有见过像这样复杂的东西,我甚至不知道如何正确地开始编码。好的,从小处开始,祝你好运!对于链表,您需要注意的是,它是一组数据,带有指向下一部分的指针。如果你把你的作品摆正了,一切都会顺利的。我希望我的片段能有所帮助。谢谢。我设法添加了链表并将其打印出来。现在我有了另一个功能,但我会花一些时间来使用它。