কম্পিউটার টিউটোরিয়াল

২D ম্যাট্রিক্স থেকে লিঙ্কড লিস্ট তৈরি করা C++-তে (রিকার্সিভ পদ্ধতি)


সমস্যা বিবরণ

একটি ২D ম্যাট্রিক্স দেওয়া আছে। আমাদের এটি একটি ২D লিঙ্কড লিস্টে রূপান্তর করতে হবে রিকার্সিভ পদ্ধতিতে। প্রতিটি নোডের দুটি পয়েন্টার থাকবে: right (ডান পাশের নোড) এবং down (নিচের নোড)।

উদাহরণ

ইনপুট ম্যাট্রিক্স:

102030
405060
708090

আউটপুট লিঙ্কড লিস্ট স্ট্রাকচার:

২D ম্যাট্রিক্স থেকে লিঙ্কড লিস্ট তৈরি করা C++-তে (রিকার্সিভ পদ্ধতি)

রিকার্সিভ অ্যালগরিদম

  1. make_2d_list(mat, i, j, m, n) ফাংশন সংজ্ঞায়িত করুন।
  2. যদি i বা j ম্যাট্রিক্সের সীমার বাইরে হয়, তবে NULL রিটার্ন করুন।
  3. mat[i][j] মান দিয়ে একটি নতুন নোড temp তৈরি করুন।
  4. temp->right = make_2d_list(mat, i, j+1, m, n) (ডান পাশের নোড)।
  5. temp->down = make_2d_list(mat, i+1, j, m, n) (নিচের নোড)।
  6. temp রিটার্ন করুন।

C++ কোড উদাহরণ

#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 || j >= m) 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);
    return 0;
}

আউটপুট

10 20 30
40 50 60
70 80 90
  1. লিংকড লিস্ট ফ্ল্যাটেন করা (C++)

  2. মাল্টিলেভেল লিংকড লিস্ট ফ্ল্যাটেন করা (C++)

  3. ২D ম্যাট্রিক্স থেকে লিঙ্কড লিস্ট তৈরি করা C++-তে (ইটারেটিভ পদ্ধতি)

  4. C++-এ সার্কুলার লিঙ্কড লিস্টে নোড গণনা