Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में 2D मैट्रिक्स से एक लिंक्ड सूची का निर्माण करें


मान लीजिए कि हमारे पास एक मैट्रिक्स है, हमें इसे पुनरावर्ती दृष्टिकोण का उपयोग करके 2d लिंक्ड सूची में बदलना होगा।

सूची में दाएँ और नीचे सूचक होंगे।

तो, अगर इनपुट पसंद है

10 20 30
40 50 60
70 80 90

तब आउटपुट होगा

C++ में 2D मैट्रिक्स से एक लिंक्ड सूची का निर्माण करें

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • फ़ंक्शन को परिभाषित करें 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

  1. C++ में एक बहुस्तरीय लिंक्ड सूची को समतल करें

    इस समस्या में, हमें एक बहुस्तरीय लिंक्ड सूची दी गई है। हमारा काम एक बहुस्तरीय लिंक्ड सूची को समतल करने के लिए एक प्रोग्राम बनाना है। फ़्लैटनिंग ऑपरेशन इस तरह से किया जाता है कि पहले स्तर के नोड्स पहले लिंक की गई सूची में होंगे और फिर दूसरे स्तर के नोड होंगे। बहुस्तरीय लिंक की गई सूची एक बहु-आयामी

  1. C++ में 2D मैट्रिक्स (पुनरावृत्तीय दृष्टिकोण) से एक लिंक्ड सूची का निर्माण करें

    मान लीजिए कि हमारे पास एक मैट्रिक्स है, हमें इसे पुनरावृत्त दृष्टिकोण का उपयोग करके 2d लिंक्ड सूची में बदलना होगा। सूची में दाएँ और नीचे सूचक होंगे। तो, अगर इनपुट पसंद है 10 20 30 40 50 60 70 80 90 तब आउटपुट होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - real_head :=NULL एक सरण

  1. C++ में सर्कुलर लिंक्ड लिस्ट में नोड्स गिनें

    हमें नोड्स के साथ एक सर्कुलर लिंक्ड लिस्ट दी गई है और कार्य एक सर्कुलर लिंक्ड लिस्ट में मौजूद नोड्स की गिनती की गणना करना है। सर्कुलर लिंक्ड लिस्ट लिंक्ड लिस्ट का एक रूपांतर है जिसमें पहला तत्व अंतिम तत्व को इंगित करता है और अंतिम तत्व पहले तत्व को इंगित करता है। सिंगल लिंक्ड लिस्ट और डबल लिंक्ड लि