Home » Blog » Java Program To Add Two Numbers Represented By Linked Lists

Given two numbers represented by two lists, write a function that returns the sum list. The sum list is a list representation of the addition of two input numbers.

``````// Java program to add two numbers
{

static class Node
{
int data;
Node next;

Node(int d)
{
data = d;
next = null;
}
}

lists and return the head node
of resultant list */
Node second)
{
// res is head node of the
// resultant list
Node res = null;
Node prev = null;
Node temp = null;
int carry = 0, sum;

// while both lists exist
while (first != null ||
second != null)
{
// Calculate value of next digit
// in resultant list. The next
// digit is sum of following things
// (i) Carry
// (ii) Next digit of first
// list (if there is a next digit)
// (ii) Next digit of second
// list (if there is a next digit)
sum = carry + (first != null ? first.data : 0) +
(second != null ? second.data : 0);

// Update carry for next calculation
carry = (sum >= 10) ? 1 : 0;

// Update sum if it is greater
// than 10
sum = sum % 10;

// Create a new node with sum as data
temp = new Node(sum);

// if this is the first node then set
// it as head of the resultant list
if (res == null)
{
res = temp;
}

// If this is not the first
// node then connect it to the rest.
else
{
prev.next = temp;
}

// Set prev for next insertion
prev = temp;

// Move first and second pointers
// to next nodes
if (first != null)
{
first = first.next;
}
if (second != null)
{
second = second.next;
}
}

if (carry > 0)
{
temp.next = new Node(carry);
}

// return head of the resultant
// list
return res;
}

/* Utility function to print a
{
{
" ");
}
System.out.println("");
}

// Driver Code
public static void main(String[] args)
{

// Creating first list
new Node(4);
new Node(6);
System.out.print("First List is ");

// Creating second list
System.out.print("Second List is ");

// Add the two lists and see the result
```First List is 7 5 9 4 6