এখানে আমরা দেখব কীভাবে একটি লিংকড লিস্টে সংরক্ষিত সংখ্যার সাথে ১ যোগ করা যায়। লিংকড লিস্টে সংখ্যার প্রতিটি অঙ্ক আলাদা নোডে থাকে। যদি সংখ্যা ৫১২ হয়, তবে এটি নিচের মতো সংরক্ষিত হবে −
512 = (5)→(1)→(2)→NULL
আমরা লিস্টটিকে increment ফাংশনে দিব। এটি ১ যোগ করার পর একটি নতুন লিস্ট ফেরত দেবে। এখানে C++ STL লিংকড লিস্ট ব্যবহার করা হয়েছে। ভালো ধারণার জন্য অ্যালগরিদমটি দেখে নেওয়া যাক।
অ্যালগরিদম
incrementList(l1)
Begin carry := 1 res := একটি খালি লিস্ট 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; //এই ১ যোগ হবে 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