Adding two numbers is a simple task, but it can be tricky if the numbers are given in the form of a linked list. Each node of the linked list contains the number of the number it represents in a continuous manner from the first node to the last node. We will get 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.
1 -> 2 -> 3 -> null 3 -> 2 -> 4 -> null
4 -> 4 -> 7 -> null
Description: Given that the first number is 123, the second number is 324, and their sum is 447, we return it in the form of a linked list.
In this method, first, we convert the given number from linked list representation to integer form and then apply addition operation. After that, we convert the result into a linked list and finally return to print the data present in the answer linked list.
// class to create the structure of the nodes class Node{ constructor(data){ this.value = data; this.next = null; } } // function to print the linked list function print(head){ var temp = head; var ans = "" while(temp.next != null){ ans += temp.value; ans += " -> " temp = temp.next } ans += temp.value ans += " -> null" console.log(ans) } // function to add data in linked list function add(data, head, tail){ return tail.next = new Node(data); } // function to convert linked list to number function LL_to_int(head){ var temp = ""; var cur = head; 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(); var head = new Node(str[0]-'0'); var tail = head; for(var i = 1; i Copy after login
The given first number is: 1 -> 2 -> 3 -> null The given second number is: 3 -> 2 -> 4 -> null The final answer is: 4 -> 4 -> 7 -> null
The time complexity of the above code is (M N), where M and N are the sizes of the given linked list.
The space complexity of the above code is O(N) because we create a new linked list.
In this method, we will add linked list elements by traversing from the end to the first node until the first linked list value becomes zero. When once becomes zero, set its value to zero and move until they both become zero.
// class to create the structure of the nodes class Node{ constructor(data){ this.value = data; this.next = null; } } // function to print the linked list function print(head){ var temp = head; var ans = "" while(temp.next != null){ ans += temp.value; ans += " -> " temp = temp.next } ans += temp.value ans += " -> null" console.log(ans) } // function to add data in linked list function add(data, head, tail){ return tail.next = new Node(data); } // function to convert string to linked list function num_to_LL(str){ var head = new Node(str[str.length-1]-'0'); var tail = head; for(var i = str.length-2; i>=0; i--){ tail = add(str[i]-'0',head, tail); } // final number is console.log("The final answer is: ") print(head); } // function to add values of the linked lists function addLL(ll1, ll2){ 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 tail = add(2,num1, tail) tail = add(1,num1, tail) console.log("The given first number in reverse manner is: ") print(num1) // defining second number var num2 = new Node(4) tail = num2 tail = add(2,num2, tail) tail = add(3,num2, tail) console.log("The given second number in reverse manner is: ") print(num2) // calling to the add function addLL(num1,num2);
The given first number is: 1 -> 2 -> 3 -> null The given second number is: 3 -> 2 -> 4 -> null The final answer is: 4 -> 4 -> 7 -> null
In this tutorial, we implemented JavaScript code to add two numbers given in the form of a linked list and return the result in the form of a linked list. We implemented two methods with O(N) time and space complexity.
The above is the detailed content of JavaScript program adds two numbers represented by a linked list - Setup 1. For more information, please follow other related articles on the PHP Chinese website!