у меня есть такой LinkedList
Given linked list: 1->2->3->4->5,
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
Затем нужно создать LinkedList вручную.
head = ListNode(1)
node1 = ListNode(2)
node2 = ListNode(3)
node3 = ListNode(4)
node4 = ListNode(5)
head.next = node1
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = None
Можно ли автоматизировать процесс, например
for i in range(1, 6):
node(i-1) = ListNode(i) #made up the node(i-1)
вы можете преобразовать итерации, такие как list
, в LinkedList следующим образом:
def generate_linked_list(nums):
cur = dummy = ListNode(0)
for num in nums:
cur.next = ListNode(num)
cur = cur.next
return dummy.next
Узел dummy
используется в случае, если nums
пуст.
или хитрый способ использовать self
без использования dummy
узла, если это функция класса:
class LinkedList:
def generate_linked_list(self, nums):
cur = self
for num in nums:
cur.next = ListNode(num)
cur = cur.next
return self.next
Применение:
head = generate_linked_list([1, 2, 3, 4, 5])
Благодарю deeeeeeeeeeeeeeeeeeply за ваш учебник.
Вы можете сделать
node = [ListNode(i) for i in range(1, 6)]
, а затем обратиться кnode[1]
,node[2]
и т. д., но наличие узлов вашего связанного списка в реальном списке делает ваш связанный список избыточным.