Запись элементов в Linkedlist

#python

#python

Вопрос:

У меня есть такой ListNode

 # Definition for singly-linked list.
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None
  

и linkedlist

  Input: l1: 1->2->4, ll2:1->3->4
  

Как можно добавить числа в список?

Я пытался

 head = ListNode(0)
node1 = ListNode(head)
node1.next = node2 #but node2 has not been declared
node2 = ListNode(2)
node2.next = node3 #node3 has not been declared
node3 = ListNode(4)
node3.next = null
  

Я думаю, мне нужна какая-нибудь вещь типа Listnode, d = defaultdict(int). тогда я могу использовать d [] перед назначением.

Комментарии:

1. Почему бы просто не создать node2 перед ссылками на него из node1 ?

Ответ №1:

Это запустит:

 head = ListNode(0)
node1 = ListNode(head) # <-- is this really what you want
node2 = ListNode(2)
node3 = ListNode(4)

node1.next = node2
node2.next = node3
node3.next = null # <-- or maybe it won't
  

но разве это не то, чего вы хотите:

 head = ListNode(0)
node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(4)

head.next = node1
node1.next = node2
node2.next = node3
# node3.next = None  # <-- this is redundant
  

Если вы определили свой класс следующим образом:

 # Definition for singly-linked list.
class ListNode:
    def __init__(self, x, next=None):
        self.val = x
        self.next = next
  

Вы могли бы сделать:

 head = ListNode(0, ListNode(1, ListNode(2, ListNode(4))))
  

но, может быть, вам нужны все промежуточные ссылки на узлы

Ответ №2:

Я бы решил это, добавив фабричный метод в свой класс node-

Определение для односвязного списка.

 class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None
    def link(value):
        node = ListNode(value)
        self.next = node
        return node
  

Затем ваш код инициализации становится…

 head = ListNode(0)
head.link(2).link(4).link(6)