এখানে আমরা দেখব কিভাবে একটি লিঙ্ক করা তালিকায় সংরক্ষিত একটি সংখ্যার সাথে 1 যোগ করা যায়। লিঙ্ক করা তালিকায়, প্রতিটি সংখ্যার সংখ্যা সংরক্ষণ করা হয়। যদি সংখ্যাটি 512 হয়, তাহলে এটি নীচের মত সংরক্ষণ করা হবে −
512 = (5)-->(1)-->(2)-->NULL
আমরা ইনক্রিমেন্ট ফাংশনে তালিকা প্রদান করছি। এটি এর সাথে 1 যোগ করার পরে অন্য একটি তালিকা ফিরিয়ে দেবে। এখানে আমরা C++ STL লিঙ্কযুক্ত তালিকা ব্যবহার করছি। আসুন আরও ভাল ধারণা বাজি রাখার জন্য অ্যালগরিদম দেখি।
অ্যালগরিদম
বৃদ্ধির তালিকা(l1)
Begin carry := 1 res := an empty list for each node n from l1, scan from last to first, do item := (l1.item + carry) mod 10 insert item at the beginning of res carry := (l1.item + carry) / 10 done if carry is not 0, then add carry at the beginning of res end if return res End
উদাহরণ
#include<iostream>
#include<list>
using namespace std;
list<int> incListNum(list<int> l1){
list<int>::reverse_iterator it1 = l1.rbegin();
list<int> result;
int carry = 1; //this 1 will be added
while(it1 != l1.rend()){
result.push_front((*it1 + carry) % 10);
carry = (*it1 + carry) / 10;
it1++;
}
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 = 9999;
list<int> n1_list = numToList(n1);
list<int> res = incListNum(n1_list);
cout << "The number: "; displayListNum(n1_list);
cout << "Result: "; displayListNum(res);
} আউটপুট
The number: 9999 Result: 10000