Javascript Program For Adding 1 To A Number Represented As Linked List Last Updated : 04 Sep, 2024 Comments Improve Suggest changes Like Article Like Report Number is represented in linked list such that each digit corresponds to a node in linked list. Add 1 to it. For example 1999 is represented as (1-> 9-> 9 -> 9) and adding 1 to it should change it to (2->0->0->0) Below are the steps : Reverse given linked list. For example, 1-> 9-> 9 -> 9 is converted to 9-> 9 -> 9 ->1.Start traversing linked list from leftmost node and add 1 to it. If there is a carry, move to the next node. Keep moving to the next node while there is a carry.Reverse modified linked list and return head.Below is the implementation of above steps. JavaScript // Javascript program to add 1 to // a linked list // Linked list node class Node { constructor() { this.data = 0; this.next = null; } }; /* Function to create a new node with given data */ function newNode(data) { let new_node = new Node(); new_node.data = data; new_node.next = null; return new_node; } // Function to reverse the // linked list function reverse(head) { let prev = null; let current = head; let next; while (current != null) { next = current.next; current.next = prev; prev = current; current = next; } return prev; } /* Adds one to a linked lists and return the head node of resultant list */ function addOneUtil(head) { // res is head node of the // resultant list let res = head; let temp, prev = null; let carry = 1, sum; // while both lists exist while (head != null) { // Calculate value of next digit in // resultant list. The next digit is // sum of following things // (i) Carry // (ii) Next digit of head list (if // there is a next digit) sum = carry + head.data; // 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 head.data = sum; // Move head and second pointers to // next nodes temp = head; head = head.next; } // if some carry is still there, add a // new node to result list. if (carry > 0) temp.next = newNode(carry); // return head of the resultant list return res; } // This function mainly uses addOneUtil(). function addOne(head) { // Reverse linked list head = reverse(head); // Add one from left to right of // reversed list head = addOneUtil(head); // Reverse the modified list return reverse(head); } // A utility function to print a // linked list function printList(node) { while (node != null) { console.log(node.data); node = node.next; } } // Driver code let head = newNode(1); head.next = newNode(9); head.next.next = newNode(9); head.next.next.next = newNode(9); console.log("List is "); printList(head); head = addOne(head); console.log("Resultant list is "); printList(head); // This code is contributed by rrrtnx. OutputList is 1 9 9 9 Resultant list is 2 0 0 0 Complexity Analysis:Time Complexity: O(n)Auxiliary Space: O(1)Recursive Implementation: We can recursively reach the last node and forward carry to previous nodes. Recursive solution doesn't require reversing of linked list. We can also use a stack in place of recursion to temporarily hold nodes.Below is the implementation of recursive solution. JavaScript // Recursive JavaScript program // to add 1 to a linked list // Linked list node class Node { constructor() { this.data = 0; this.next = null; } } /* Function to create a new node with given data */ function newNode(data) { let new_node = new Node(); new_node.data = data; new_node.next = null; return new_node; } // Recursively add 1 from end to // beginning and returns carry after // all nodes are processed. function addWithCarry(head) { // If linked list is empty, then // return carry if (head == null) return 1; // Add carry returned be next node // call let res = head.data + addWithCarry(head.next); // Update data and return new carry head.data = res % 10; return parseInt(res / 10); } // This function mainly uses // addWithCarry(). function addOne(head) { // Add 1 to linked list from end // to beginning let carry = addWithCarry(head); let newNodes = null; // If there is carry after processing // all nodes, then we need to add a // new node to linked list if (carry > 0) { newNodes = newNode(carry); newNodes.next = head; // New node becomes head now return newNodes; } return head; } // A utility function to print a // linked list function printList(node) { while (node != null) { console.log(node.data); node = node.next; } } // Driver code let head = newNode(1); head.next = newNode(9); head.next.next = newNode(9); head.next.next.next = newNode(9); console.log("List is "); printList(head); head = addOne(head); console.log("Resultant list is "); printList(head); OutputList is 1 9 9 9 Resultant list is 2 0 0 0 Please refer complete article on Add 1 to a number represented as linked list for more details! Comment More infoAdvertise with us Next Article Javascript Program For Adding 1 To A Number Represented As Linked List kartik Follow Improve Article Tags : Linked List JavaScript Web Technologies DSA Amazon +1 More Practice Tags : AmazonLinked List Similar Reads JavaScript Linked List Programs JavaScript Linked List Programs contain a list of articles based on programming. Linked List is a linear data structure that stores data in linearly connected nodes. Linked lists store elements sequentially, but doesnât store the elements contiguously like an array. S. NoArticles1JavaScript Program 5 min read Implementation of LinkedList in Javascript In this article, we will be implementing the LinkedList data structure in Javascript.A linked list is a linear data structure where elements are stored in nodes, each containing a value and a reference (or pointer) to the next node. It allows for efficient insertion and deletion operations.Each node 5 min read Javascript Program For Searching An Element In A Linked List Write a function that searches a given key 'x' in a given singly linked list. The function should return true if x is present in linked list and false otherwise.bool search(Node *head, int x) For example, if the key to be searched is 15 and linked list is 14->21->11->30->10, then functio 3 min read Javascript Program For Inserting A Node In A Linked List We have introduced Linked Lists in the previous post. We also created a simple linked list with 3 nodes and discussed linked list traversal.All programs discussed in this post consider the following representations of the linked list. JavaScript// Linked List Class // Head of list let head; // Node 7 min read Javascript Program For Inserting Node In The Middle Of The Linked List Given a linked list containing n nodes. The problem is to insert a new node with data x at the middle of the list. If n is even, then insert the new node after the (n/2)th node, else insert the new node after the (n+1)/2th node.Examples: Input : list: 1->2->4->5 x = 3Output : 1->2->3- 4 min read Javascript Program For Writing A Function To Delete A Linked List A linked list is a linear data structure, in which the elements are not stored at contiguous memory locations. The elements in a linked list are linked using pointers. This article focuses on writing a function to delete a linked list.Implementation: JavaScript// Javascript program to delete // a li 1 min read Javascript Program For Deleting A Linked List Node At A Given Position Given a singly linked list and a position, delete a linked list node at the given position.Example: Input: position = 1, Linked List = 8->2->3->1->7Output: Linked List = 8->3->1->7Input: position = 0, Linked List = 8->2->3->1->7Output: Linked List = 2->3->1- 3 min read Javascript Program For Finding Length Of A Linked List Write a function to count the number of nodes in a given singly linked list.For example, the function should return 5 for linked list 1->3->1->2->1.Iterative Solution: 1) Initialize count as 0 2) Initialize a node pointer, current = head.3) Do following while current is not NULL a) curre 3 min read Javascript Program For Rotating A Linked List Given a singly linked list, rotate the linked list counter-clockwise by k nodes. Where k is a given positive integer. For example, if the given linked list is 10->20->30->40->50->60 and k is 4, the list should be modified to 50->60->10->20->30->40. Assume that k is smal 5 min read Javascript Program For Making Middle Node Head In A Linked List Given a singly linked list, find middle of the linked list and set middle node of the linked list at beginning of the linked list. Examples:Input: 1 2 3 4 5 Output: 3 1 2 4 5Input: 1 2 3 4 5 6Output: 4 1 2 3 5 6 The idea is to first find middle of a linked list using two pointers, first one moves on 3 min read Like