Как использовать python для создания указателя на связанный список - PullRequest
0 голосов
/ 04 марта 2020

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

class Node: 
    def __init__(self, val):
        self.val=val
        self.next=None

a=[1,2,3,4,5]

new_l=Node(a[0])
ptl=new_l.next
for i in range(1, 5):
    ptl=Node(a[i])
    ptl=ptl.next
# return new_l

Мое первоначальное намерение ptl=Node(a[i]) состоит в том, чтобы связать Node(a[i]) с текущим местоположением ptl. Однако фактический эффект состоит в том, что python создает новый Node(a[i]) (в новом случайном месте), и вместо этого ptl указывает на Node(a[i]). Поэтому я потерял след предыдущей позиции, где был список.

Я нашел способ обойти проблему, изменив код следующим образом:

b=[1,2,3,4,5]

new_l=Node(b[0])
ptl=new_l
for i in range(1, 5):
    ptl.next=Node(b[i])
    ptl=ptl.next

, и он работает. Тем не менее, мне все еще интересно, есть ли способ написать name=value (как в C ++), чтобы изменить значение в расположении «имя», вместо создания значения (и некоторого другого местоположения) и вместо этого назвать его «имя» .

Кажется, python "переменные" ведут себя как нечто среднее между переменными C ++ и указателями C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...