কম্পিউটার

C++-এ একটি তৃতীয় তালিকায় লিঙ্কযুক্ত তালিকা হিসাবে উপস্থাপিত দুটি সংখ্যাকে গুণ করুন


এটিতে সংখ্যা সহ দুটি লিঙ্কযুক্ত তালিকা দেওয়া হয়েছে। আমাদের লিঙ্ক করা তালিকা দ্বারা গঠিত দুটি সংখ্যাকে গুণ করতে হবে। দুটি লিঙ্ক করা তালিকা থেকে সংখ্যা গঠন করে এটি সহজেই করা যেতে পারে। আসুন একটি উদাহরণ দেখি।

ইনপুট

1 -> 2 -> NULL
2 -> 3 -> NULL

আউটপুট

2 -> 7 -> 6 -> NULL

অ্যালগরিদম

  • সংযুক্ত দুটি তালিকা শুরু করুন।
  • দুটি সংখ্যা সংরক্ষণ করতে 0 দিয়ে দুটি ভেরিয়েবল শুরু করুন।
  • দুটি লিঙ্ক করা তালিকার উপর পুনরাবৃত্তি করুন।
    • প্রতিটি সংখ্যা শেষে সংশ্লিষ্ট সংখ্যা ভেরিয়েবলে যোগ করুন।
  • ফলাফল সংখ্যাগুলিকে গুণ করুন এবং ফলাফলটিকে একটি চলকের মধ্যে সংরক্ষণ করুন৷
  • ফলাফল সহ একটি নতুন তালিকা তৈরি করুন।
  • নতুন তালিকা প্রিন্ট করুন।

বাস্তবায়ন

C++

-এ উপরের অ্যালগরিদমের বাস্তবায়ন নিচে দেওয়া হল
#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   struct Node* next;
};
void addNewNode(struct Node** head, int new_data) {
   struct Node* newNode = new Node;
   newNode->data = new_data;
   newNode->next = *head;
   *head = newNode;
}
void multiplyTwoLinkedLists(struct Node* firstHead, struct Node* secondHead
, struct Node** newLinkedListHead) {
   int _1 = 0, _2 = 0;
   while (firstHead || secondHead) {
      if (firstHead) {
         _1 = _1 * 10 + firstHead->data;
         firstHead = firstHead->next;
      }
      if (secondHead) {
         _2 = _2 * 10 + secondHead->data;
         secondHead = secondHead->next;
      }
   }
   int result = _1 * _2;
   while (result) {
      addNewNode(newLinkedListHead, result % 10);
      result /= 10;
   }
}
void printLinkedList(struct Node *node) {
   while(node != NULL) {
      cout << node->data << "->";
      node = node->next;
   }
   cout << "NULL" << endl;
}
int main(void) {
   struct Node* firstHead = NULL;
   struct Node* secondHead = NULL;
addNewNode(&firstHead, 1);
   addNewNode(&firstHead, 2);
   addNewNode(&firstHead, 3);
   printLinkedList(firstHead);
   addNewNode(&secondHead, 1);
   addNewNode(&secondHead, 2);
   printLinkedList(secondHead);
   struct Node* newLinkedListHead = NULL;
   multiplyTwoLinkedLists(firstHead, secondHead, &newLinkedListHead);
   printLinkedList(newLinkedListHead);
   return 0;
}

আউটপুট

আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

3->2->1->NULL
2->1->NULL
6->7->4->1->NULL

  1. C++ এ একটি লিঙ্কযুক্ত তালিকা সমতল করা

  2. C++ এ দুটি লিঙ্ক করা তালিকার ছেদ

  3. একটি লিঙ্ক করা তালিকাকে C++ এ একটি বাইনারি অনুসন্ধান ট্রিতে রূপান্তর করার প্রোগ্রাম

  4. C++ এ লিঙ্কড লিস্ট ব্যবহার করে দুটি বহুপদ যোগ করা হচ্ছে।