मान लीजिए कि हमारे पास एक मैट्रिक्स है, हमें इसे पुनरावर्ती दृष्टिकोण का उपयोग करके 2d लिंक्ड सूची में बदलना होगा।
सूची में दाएँ और नीचे सूचक होंगे।
तो, अगर इनपुट पसंद है
10 | 20 | 30 |
40 | 50 | 60 |
70 | 80 | 90 |
तब आउटपुट होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
फ़ंक्शन को परिभाषित करें make_2d_list(), यह मैट्रिक्स मैट, i, j, m, n,
लेगा -
यदि i और j मैट्रिक्स सीमा में नहीं हैं, तो -
-
वापसी शून्य
-
-
अस्थायी:=मूल्य के साथ एक नया नोड बनाएँ चटाई[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