# JavaScript Program To Add Two Numbers Represented By Linked Lists- Set 1

Adding two numbers is an easy task but could be tricky if the numbers are given in the form of the linked list. Each node of the linked list contains the digit of the number it represents in a continuous manner from the first node to the last node. We will be given two linked lists representing two different numbers and we have to add them and return the third number in the form of a linked list.

### Input

1 -> 2 -> 3 -> null
3 -> 2 -> 4 -> null


### Output

4 -> 4 -> 7 -> null


Explanation: Given first number is 123 and the second number is 324 and their sum is 447, we have returned in the form of a linked list.

## Converting to the Number Approach

In this approach, first, we will convert the given number from the linked list representation to the integer form then we will apply the addition operation. After that, we will convert the result into the linked list and at last will return print the data present in the answer linked list.

### Example

// class to create the structure of the nodes
class Node{
constructor(data){
this.value = data;
this.next = null;
}
}

// function to print the linked list
var ans = ""
while(temp.next != null){
ans += temp.value;
ans += " -> "
temp = temp.next
}
ans += temp.value
ans += " -> null"

console.log(ans)
}

return tail.next = new Node(data);
}

// function to convert linked list to number
var temp = "";
while(cur != null){
temp += cur.value.toString();
cur = cur.next;
}
return parseInt(temp);
}

// function to convert number to linked list
function num_to_LL(num){
var str = num.toString();
for(var i = 1; i<str.length; i++){
}

// final number is
}

// defining first number
var num1  = new Node(1)
var tail  = num1
console.log("The given first number is: ")
print(num1)

// defining second number
var num2 = new Node(3)
tail  = num2
console.log("The given second number is: ")
print(num2)

// converting both the linked list into the actual values
int_num1 = LL_to_int(num1)
int_num2 = LL_to_int(num2)
var ans = int_num1 + int_num2;

// converting number to the linked list
num_to_LL(ans);


### Output

The given first number is:
1 -> 2 -> 3 -> null
The given second number is:
3 -> 2 -> 4 -> null
4 -> 4 -> 7 -> null


### Time and Space Complexity

The time complexity of the above code is (M+N), where M and N are the size of the given linked list.

The space complexity of the above code is O(N), because we have created a new linked list.

## Another Approach

In this approach, we will add the linked list elements by traversing them from the end to the first node until the one linked list value becomes zero. When once becomes zero take its value as zero and move until both of them become zero.

### Example

// class to create the structure of the nodes
class Node{
constructor(data){
this.value = data;
this.next = null;
}
}

// function to print the linked list
var ans = ""
while(temp.next != null){
ans += temp.value;
ans += " -> "
temp = temp.next
}
ans += temp.value
ans += " -> null"
console.log(ans)
}

return tail.next = new Node(data);
}

// function to convert string to linked list
function num_to_LL(str){
for(var i = str.length-2; i>=0; i--){
}

// final number is
}

var str = "";
var carry = 0;
while((ll1 != null) || (ll2 != null)){
if(ll1 == null){
carry += ll2.value;
ll2 = ll2.next;
}  else if(ll2 == null){
carry += ll1.value;
ll1 = ll1.next;
}  else {
carry += ll1.value + ll2.value;
ll2 = ll2.next;
ll1 = ll1.next;
}
str += (carry%10).toString();
carry /= 10;
carry = Math.floor(carry);
}
if(carry != 0){
str += (carry%10).toString();
}

// calling function to print the answer
num_to_LL(str);
}

// defining first number in reverse manner
var num1  = new Node(3)
var tail  = num1
console.log("The given first number in reverse manner is: ")
print(num1)

// defining second number
var num2 = new Node(4)
tail  = num2
console.log("The given second number in reverse manner is: ")
print(num2)

// calling to the add function


### Output

The given first number is:
1 -> 2 -> 3 -> null
The given second number is:
3 -> 2 -> 4 -> null
4 -> 4 -> 7 -> null


## Conclusion

In this tutorial, we have implemented the JavaScript code to add two number which were given in the form of linked list and we have returned the result in the form of linked list. We have implemented two methods with both time and space complexity of O(N).

Updated on: 04-May-2023

83 Views