#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)