Я пытаюсь написать функцию Python, которая добавляет два связанных списка вместе. Каждый узел содержит одну цифру потенциально большого целого числа, причем наименьшая значащая цифра идет первой
Ex Функция: add_linked_list_integers (a, b) - где a и b являются односвязными спискамичьи узлы содержат одну цифру положительного целого числа.
Ex Проблема: 617 + 295 = 912 будет представлен в связанных списках как (7-> 1-> 6) + (5-> 9-> 2) = (2-> 1-> 9).
Мне предоставляется базовый класс ListNode
и примеры функций для печати и создания связного списка целых чисел.
class ListNode:
'''Simple node for singly-linked list with _value and _next fields'''
def __init__(self, value, next=None):
'''Create a new node, with _value field and optional _next node pointer'''
self._value = value
self._next = next
def print_helper(l):
'''Prints the value of the integer represented by the linked-list l, without trailing carriage return'''
if l:
if (l._value < 0) or (l._value > 9):
raise Exception('digit out of range')
print_helper(l._next)
print(l._value, end="")
def print_linked_list_integer(l):
'''Prints the value of the integer represented by the linked-list l, with trailing carriage return'''
print_helper(l)
print()
def create_linked_list_integer(i):
'''Returns the linked-list representation of the integer i, least-significant digit first'''
result = ListNode(i % 10)
if i >= 10:
result._next = create_linked_list_integer(i // 10)
return result
def add_linked_list_integers(a, b):
'''Return the sum of two integers represented as linked lists
В настоящее время моя функция выглядит следующим образом:
def add_linked_list_integers(a, b):
'''Return the sum of two integers represented as linked lists'''
answer = ListNode()
if a == None:
return b
elif b == None:
return a
carry = 0
result = (a.data + b.data + carry)
if result > 9:
result = result - 10
carry = 1
answer.push(result)
return answer