如何在此类中使用python创建链表

如何在此类中使用python创建链表,python,python-3.x,linked-list,Python,Python 3.x,Linked List,我在Leetcode中看到一个链表类定义: class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = None 我不知道如何使用它,我想找出两种方法: 首先: 如果我想一步一步地创建一个链表1->3->5,如何创建?我的想法是: p1 = ListNode(1) p2 = ListNode(3) p3 = ListNode(5)

我在Leetcode中看到一个链表类定义:

class ListNode:
    def __init__(self, val=0, next=None):          
        self.val = val
        self.next = None
我不知道如何使用它,我想找出两种方法:

首先: 如果我想一步一步地创建一个链表1->3->5,如何创建?我的想法是:

p1 = ListNode(1)
p2 = ListNode(3)
p3 = ListNode(5)

p2 = p1.next
p3 = p1.next.next
print(p1.val)  #however it shows p1 doesn't have next attr...
其次,如果我有一个链表,比如:

l1 = ListNode([1, 2, 4, 6])
如何一步一步地获得每个值? 我试着说:

print(l3.next) 
print(l3.next.next)#maybe just some false idea...

构造函数错误:它将
self.next
设置为
None
,而不是
next
。让我们解决这个问题:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
现在我们可以创建一个包含三个节点的列表。由于这是一个单独链接的转发列表,我们需要从后面开始:

p3 = ListNode(3)
p2 = ListNode(2, p3)
p1 = ListNode(1, p2)

print(p1.next.next.val) # 3
或者,要从列表生成链接列表,请执行以下操作:

def from_list(lst) -> ListNode:
    node = None
    for item in lst[::-1]:
        node = ListNode(item, node)

    return node

x = from_list([1, 2, 3, 4])
print(x.next.next.next.val) # 4