Попытка пройти связанный список в Python 3Python

Программы на Python
Ответить
Anonymous
 Попытка пройти связанный список в Python 3

Сообщение Anonymous »

У меня возникла странная проблема с перемещением по пользовательскому связанному списку. Вот код обхода.

Код: Выделить всё

from typing import Optional

class ListNode:

def __init__(self, val, next_node=None):

self.val = val
self.next_node = next_node

@property
def value(self):
return self.val

def __str__(self):
return f"Value={self.val}, Next node available={self.next_node.value if self.next_node != None else -1}"

__dict__ = ("val", "next_node",)

class Solution:

def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[list]:

result_arr = []

l1_running = l1 != None
curr_node = l1

print("***** Start traversing L1 only ******")
while l1_running:
print(curr_node)
if curr_node.next_node:
l1_running = True
curr_node = curr_node.next_node
else:
l1_running = False
curr_node = None

print("***** End traversing L1 only ******")
print(result_arr)
return result_arr

def list_node_builder(self, l1: list[str], l2: list[int]) -> list[int]:

print("***** Start building Linked List ******")
l1_list_nodes = []
l2_list_nodes = []

for index, num in enumerate(l1):
if index == len(l1) - 1:
new_node = ListNode(num)
l1_list_nodes.append(new_node)
print(new_node)
else:
new_node = ListNode(num, ListNode(l1[index+1]))
print(str(new_node))
l1_list_nodes.append(new_node)

for index, num in enumerate(l2):
if index == len(l2) -1:
l2_list_nodes.append(ListNode(num))
else:
l2_list_nodes.append(ListNode(num, ListNode(l2[index+1])))

print("***** Done building Linked List ******")
return self.addTwoNumbers(l1_list_nodes[0], l2_list_nodes[0])
Когда я пытаюсь вызвать это, используя следующий код:

Код: Выделить всё

from addNumbers import Solution

if __name__ == "__main__":
s = Solution()
print(s.list_node_builder(l1=["a","b","c","d","e","f","g"], l2=[9,9,9,1]))
Мой вывод выглядит следующим образом:

Код: Выделить всё

/Users/shyam/codespaces/python_projects/.venv/bin/python /Users/shyam/codespaces/python_projects/index.py
***** Start building Linked List ******
Value=a, Next node available=b
Value=b, Next node available=c
Value=c, Next node available=d
Value=d, Next node available=e
Value=e, Next node available=f
Value=f, Next node available=g
Value=g, Next node available=-1
***** Done building Linked List ******
***** Start traversing L1 only ******
Value=a, Next node available=b
Value=b, Next node available=-1
***** End traversing L1 only ******
[]
[]

Process finished with exit code 0
Я не могу понять, почему построение связанного списка выглядит нормально, а next_node настроен правильно, но когда я просматриваю список с помощью головы, я останавливаюсь на 2-й узел.


Подробнее здесь: https://stackoverflow.com/questions/792 ... n-python-3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»