Как создать связанный список в Python - PullRequest
1 голос
/ 05 мая 2019

Я пытаюсь решить проблему кодирования связанного списка в python.И я дал только следующий класс для создания связанного списка

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

Я могу создать связанный список примерно так:

x = ListNode(1)
x.next = ListNode(4)
x.next.next = ListNode(5)

Однако, Как я могу создать итеративно (внутри дляпетля)

Ответы [ 3 ]

1 голос
/ 05 мая 2019

Вам нужны два «указателя», которые запоминают голову и хвост вашего списка. Голова инициализируется один раз. В конечном итоге вы будете использовать его для доступа ко всему списку. Хвост меняется каждый раз, когда вы добавляете другой узел:

data = [5, 1, 7, 96]
tail = head = ListNode(data[0])
for x in data[1:]:
    tail.next = ListNode(x) # Create and add another node
    tail = tail.next # Move the tail pointer
0 голосов
/ 05 мая 2019

Вы можете добавить аргумент next в конструктор:

class ListNode(object):
    def __init__(self, x, next=None):
        self.x = x
        self.next = next

head = None
for x in [5, 1, 7, 96]:
    head = ListNode(x, next=head)

# Linked list looks like:
# (96) -> ( 7) -> ( 1) -> ( 5) -> None
0 голосов
/ 05 мая 2019

Вы можете сделать что-то вроде:

arr = [1,4,5]
for i in arr:
    x = ListNode(i)
    x = x.next

Но теперь x станет None.Поскольку отслеживать больше нечего, вы не можете печатать элементы.

Вы можете убедиться в этом, напечатав значения x.val между циклами:

arr = [1,4,5]
for i in arr:
    x = ListNode(i)
    print(x.val)
    x = x.next

output:

1
4
5
...