What if you could add huge numbers digit by digit without ever losing track of the carry?
Why Add Two Numbers Represented as Linked List in DSA Python?
Imagine you have two long lists of digits written on paper, each representing a big number. You want to add these numbers together, but the digits are scattered and you have to add them one by one from right to left, carrying over when needed.
Doing this by hand is slow and easy to make mistakes, especially when the numbers are very long. You might lose track of carries or mix up the order of digits. It's hard to keep everything organized without a clear system.
Using linked lists to represent these numbers lets us add them digit by digit automatically. Each node holds one digit, and we can move through the lists step by step, adding digits and carrying over as needed. This method is neat, organized, and works even for very large numbers.
num1 = [2, 4, 3] num2 = [5, 6, 4] # Manually add digits with carry carry = 0 result = [] for i in range(len(num1)): total = num1[i] + num2[i] + carry carry = total // 10 result.append(total % 10) if carry: result.append(carry)
class Node: def __init__(self, val=0, next=None): self.val = val self.next = next def addTwoNumbers(l1, l2): dummy = Node() current = dummy carry = 0 while l1 or l2 or carry: val1 = l1.val if l1 else 0 val2 = l2.val if l2 else 0 total = val1 + val2 + carry carry = total // 10 current.next = Node(total % 10) current = current.next l1 = l1.next if l1 else None l2 = l2.next if l2 else None return dummy.next
This lets us add very large numbers easily and correctly, no matter how many digits they have.
Think about adding two long account balances digit by digit in a banking system where numbers are too big for normal data types.
Manual addition of large numbers is error-prone and slow.
Linked lists let us store digits separately and add them stepwise.
This method handles carries and different lengths smoothly.