Be the first user to complete this post
|
Add to List |
35. Adding Two Numbers with Linked Lists
Objective: Two numbers represented by a linked listwhere each node contains single digit. The digits are stored in Forward order, means head is pointing to the last digit of the number.
Input: Two numbers represented by Linked Lists Output: Addition of two numbers represented by a Linked List.
Example:
First Number : 1007 Second Number : 93 Addition : 1100
Approach:
- Get the length of both the lists.
- If lengths are not equal, make them equal by adding nodes with value 0 in front of shorter linked list.
- Create a newHead = null, it will be the result linked list.
- Now using recursion travel in both the list till the end.
- So now nodes are stores in a stack
- Now processing the call stack, each node will pop out from the stack in reverse order
- Take node data from both the lists add them along with carry. Reset the carry = 0
- if sum is >=10 , then make carry = 1 and and do sum = sum - 10.
- Add the newly created node to the result linked list with the help of newHead.
- Repeat steps 6, 7, 8 until both the lists are over.
- At the end, check if carry = 1, if yes, create a new Node with value 1 and add to result list.
First Number : ->1->0->0->7 Second Number : ->9->3 Addition : ->1->1->0->0
Also Read - Two numbers represented by a linked list, Number Stored in REVERSE order