#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. Большое спасибо за ваш урок.