কম্পিউটার

C++ এ 2D ম্যাট্রিক্স থেকে একটি লিঙ্ক করা তালিকা তৈরি করুন


ধরুন আমাদের একটি ম্যাট্রিক্স আছে, আমাদের এটিকে পুনরাবৃত্ত পদ্ধতি ব্যবহার করে 2d লিঙ্কযুক্ত তালিকায় রূপান্তর করতে হবে৷

তালিকায় ডান এবং নিচের পয়েন্টার থাকবে৷

সুতরাং, যদি ইনপুট মত হয়

10 20 30
40 50 60
70 80 90

তারপর আউটপুট হবে

C++ এ 2D ম্যাট্রিক্স থেকে একটি লিঙ্ক করা তালিকা তৈরি করুন

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি ফাংশন make_2d_list() সংজ্ঞায়িত করুন, এটি ম্যাট্রিক্স ম্যাট, i, j, m, n,

    লাগবে
  • যদি i এবং j ম্যাট্রিক্স সীমানায় না থাকে, তাহলে −

    • রিটার্ন নাল

  • temp :=মান ম্যাট[i, j]

    সহ একটি নতুন নোড তৈরি করুন
  • তাপমাত্রার অধিকার :=make_2d_list(mat, i, j + 1, m, n)

  • নিম্ন তাপমাত্রা :=make_2d_list(mat, i + 1, j, m, n)

  • রিটার্ন টেম্প

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

#include <bits/stdc++.h>
using namespace std;
class TreeNode {
   public:
   int data;
   TreeNode *right, *down;
   TreeNode(int d){
      data = d;
      right = down = NULL;
   }
};
void show_2d_list(TreeNode* head) {
   TreeNode *right_ptr, *down_ptr = head;
   while (down_ptr) {
      right_ptr = down_ptr;
      while (right_ptr) {
         cout << right_ptr->data << " ";
         right_ptr = right_ptr->right;
      }
      cout << endl;
      down_ptr = down_ptr->down;
   }
}
TreeNode* make_2d_list(int mat[][3], int i, int j, int m, int n) {
   if (i > n - 1 || j > m - 1)
      return NULL;
   TreeNode* temp = new TreeNode(mat[i][j]);
   temp->right = make_2d_list(mat, i, j + 1, m, n);
   temp->down = make_2d_list(mat, i + 1, j, m, n);
   return temp;
}
int main() {
   int m = 3, n = 3;
   int mat[][3] = {
      { 10, 20, 30 },
      { 40, 50, 60 },
      { 70, 80, 90 } };
   TreeNode* head = make_2d_list(mat, 0, 0, m, n);
   show_2d_list(head);
}

ইনপুট

{ { 10, 20, 30 },
{ 40, 50, 60 },
{ 70, 80, 90 } }

আউটপুট

10 20 30
40 50 60
70 80 90

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

  2. C++ এ বহুস্তরের লিঙ্কযুক্ত তালিকা সমতল করুন

  3. C++ এ 2D ম্যাট্রিক্স (ইটারেটিভ অ্যাপ্রোচ) থেকে একটি লিঙ্ক করা তালিকা তৈরি করুন

  4. C++ এ সার্কুলার লিঙ্ক তালিকায় নোড গণনা করুন