- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Add two numbers represented by linked lists?
Here we will see how to add two numbers stored into separate linked list. In the linked list, each digit of the numbers is stored. If the number is 512, then it will be stored like below −
512 = (5)-->(1)-->(2)-->NULL
We are providing two lists of this type, our task is to add them and get the result after calculating the sum. Here we are using the C++ STL linked list. Let us see the algorithm to bet better idea.
Algorithm
addListNumbers(l1, l2)
Begin Adjust the l1 and l2 lengths by adding leading 0s with the smaller one carry := 0 res := an empty list for each node n from l1, scan from last to first, do item := (l1.item + l2.item + carry) mod 10 insert item at the beginning of res carry := (l1.item + l2.item + carry) / 10 done if carry is not 0, then add carry at the beginning of res end if return res End
Example
#include<iostream> #include<list> using namespace std; list addListNumbers(list<int> l1, list<int> l2){ //add leading 0s to the shortest number to make them equal length if(l1.size() > l2.size()){ for(int i = l2.size(); i != l1.size(); i++){ l2.push_front(0); } }else if(l1.size() < l2.size()){ for(int i = l1.size(); i != l2.size(); i++){ l1.push_front(0); } } list<int>::reverse_iterator it1 = l1.rbegin(); list<int>::reverse_iterator it2 = l2.rbegin(); list<int> result; int carry = 0; while(it1 != l1.rend()){ result.push_front((*it1 + *it2 + carry) % 10); carry = (*it1 + *it2 + carry) / 10; it1++; it2++; } if(carry != 0){ result.push_front(carry); } return result; } list<int> numToList(int n){ list<int> numList; while(n != 0){ numList.push_front(n % 10); n /= 10; } return numList; } void displayListNum(list<int> numList){ for(list<int>::iterator it = numList.begin(); it != numList.end(); it++){ cout<<*it; } cout << endl; } int main() { int n1 = 512; int n2 = 14578; list<int> n1_list = numToList(n1); list<int> n2_list = numToList(n2); list<int> res = addListNumbers(n1_list, n2_list); cout << "First number: "; displayListNum(n1_list); cout << "Second number: "; displayListNum(n2_list); cout << "Result: "; displayListNum(res); }
Output
First number: 512 Second number: 14578 Result: 15090
- Related Articles
- Multiply two numbers represented by Linked Lists in C++
- Multiply two numbers represented as linked lists into a third list in C++
- Program to find numbers represented as linked lists in Python
- Add two numbers represented by two arrays in C Program
- Program to add two polynomials given as linked lists using Python
- Program to add two numbers represented as strings in Python
- Add 1 to a number represented as linked list?
- Add 1 to a number represented as a linked list?
- Merge two sorted linked lists using C++.
- Intersection of Two Linked Lists in Python
- Intersection of Two Linked Lists in C++
- Create a linked list from two linked lists by choosing max element at each position in C++ Program
- Python Program to Add Corresponding Positioned Elements of 2 Linked Lists
- By which letter irrational numbers are represented?
- Find the Intersection Point of Two Linked Lists in Java

Advertisements