【问题标题】:How to create a linked list by python in this class如何在这个类中通过python创建一个链表
【发布时间】:2021-01-14 19:35:17
【问题描述】:

我在 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...

【问题讨论】:

    标签: python python-3.x linked-list


    【解决方案1】:

    构造函数错误:它将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
    

    【讨论】:

      猜你喜欢
      • 2019-09-23
      • 1970-01-01
      • 2020-01-11
      • 2021-07-26
      • 2018-04-13
      • 2020-12-18
      • 2020-04-22
      • 1970-01-01
      • 2017-04-16
      相关资源
      最近更新 更多