Автоматизируйте процесс создания LinkedList

#python

#python

Вопрос:

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

Данный связанный список: 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)
  

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

1. Вы могли бы сделать node = [ListNode(i) for i in range(1, 6)] , а затем ссылаться на node[1] , node[2] , и т.д., Но наличие узлов вашего связанного списка в реальном списке делает ваш связанный список своего рода избыточным.

Ответ №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])
  

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

1. Большое спасибо за ваш урок.