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

लिंक्ड सूची सी++ में कूदती है

मान लीजिए कि हमारे पास एक सिंगल लिंक्ड लिस्ट नोड है जिसमें पॉजिटिव नंबर हैं। हमें वही लिंक्ड सूची ढूंढनी होगी जहां प्रत्येक नोड का अगला बिंदु नोड वैल नोड्स के आगे हो। अगर हमें ऐसा नोड नहीं मिल रहा है, तो अगला शून्य होगा।

इसलिए, यदि इनपुट [2,3,10,5,9] जैसा है, तो आउटपुट [2, 3, 15, ]

होगा।

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

  • सरणी को परिभाषित करें v

  • जबकि नोड शून्य नहीं है, करें -

    • v

      . में नोड का मान डालें
    • नोड :=नोड के बगल में

  • ret =मान 0 के साथ नई सूची नोड

  • अस्थायी =सेवानिवृत्त

  • मैं :=0

  • जबकि मैं <वी का आकार, करते हैं -

    • अस्थायी के आगे :=मूल्य v[i]

      . के साथ नई सूची नोड
    • अस्थायी :=अस्थायी के बाद

    • मैं :=मैं + वी[i]

  • रिट के बाद वापसी

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class ListNode {
   public:
   int val;
   ListNode *next;
   ListNode(int data) {
      val = data;
      next = NULL;
   }
};
ListNode *make_list(vector<int> v) {
   ListNode *head = new ListNode(v[0]);
   for (int i = 1; i < v.size(); i++) {
      ListNode *ptr = head;
      while (ptr->next != NULL) {
         ptr = ptr->next;
      }
      ptr->next = new ListNode(v[i]);
   }
   return head;
}
void print_list(ListNode *head) {
   ListNode *ptr = head;
   cout << "[";
   while (ptr) {
      cout << ptr->val << ", ";
      ptr = ptr->next;
   }
   cout << "]" << endl;
}
class Solution {
   public:
   ListNode* solve(ListNode* node) {
      vector <int> v;
      while(node){
         v.push_back(node->val);
         node = node->next;
      }
      ListNode* ret = new ListNode(0);
      ListNode* temp = ret;
      int i = 0;
      while(i < v.size()){
         temp->next = new ListNode(v[i]);
         temp = temp->next;
         i += v[i];
      }
      return ret->next;
   }
};
main(){
   Solution ob;
   vector<int> v = {2,2,3,5,9,15,3,4};
   ListNode *head = make_list(v);
   print_list(ob.solve(head));
}

इनपुट

{2,2,3,5,9,15,3,4}

आउटपुट

[2, 3, 15, ]

  1. सी ++ में एक लिंक्ड सूची को समतल करना सी ++ में एक लिंक्ड सूची को समतल करना

    इस समस्या में, हमें दो पॉइंटर नोड्स वाली लिंक्ड लिस्ट दी जाती है, दाएं और नीचे। दायां नोड मुख्य लिंक्ड सूची सूचक है। डाउन नोड उस नोड से शुरू होने वाली सेकेंडरी लिंक्ड लिस्ट के लिए है। सभी लिंक की गई सूचियां क्रमबद्ध हैं। हमारा काम एक लिंक की गई सूची को समतल करने के लिए एक प्रोग्राम बनाना ह

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

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

  1. सी ++ में लिंक्ड लिस्ट का उपयोग करके दो बहुपदों को जोड़ना। सी ++ में लिंक्ड लिस्ट का उपयोग करके दो बहुपदों को जोड़ना।

    इस अवधारणा को बेहतर ढंग से समझने के लिए आइए सबसे पहले आवश्यक सभी बुनियादी सामग्री को ब्रश करें। लिंक की गई सूची एक डेटा संरचना है जो सूची के नोड में प्रत्येक तत्व को एक वस्तु के रूप में संग्रहीत करती है। प्रत्येक नोट में दो भाग डेटा होते हैं और अगले नोड से लिंक होते हैं। बहुपद एक गणितीय व्यंजक है