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

सी ++ में एक लिंक्ड सूची (पुनरावर्ती और रिकर्सिव) की लंबाई खोजें


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

  • पुनरावृत्त दृष्टिकोण के लिए -

    • सूची का शीर्ष लें, जब तक कि वर्तमान सूचक शून्य न हो, अगले नोड पर जाएं और गिनती बढ़ाएं।

  • पुनरावर्ती दृष्टिकोण के लिए -

    • सिर को एक तर्क के रूप में पास करें, आधार स्थिति तब होती है जब तर्क शून्य होता है, फिर 0 लौटाता है, अन्यथा पुनरावर्ती रूप से सूची में प्रवेश करें और वर्तमान नोड से अगला नोड भेजें, सबलिस्ट की 1 + लंबाई लौटाएं

उदाहरण

#include<iostream>
using namespace std;
class Node {
   public:
      int data;
   Node* next;
};
void append(struct Node** start, int data) {
   struct Node* new_node = new Node;
   new_node->data = data;
   new_node->next = (*start);
   (*start) = new_node;
}
int count_recursive(Node* start) {
   if (start == NULL)
      return 0;
   return 1 + count_recursive(start->next);
}
int count_iterative(Node* start) {
   int count = 0;
   Node* current = start;
   while (current != NULL) {
      count++;
      current = current->next;
   }
   return count;
}
int main() {
   Node* start = NULL;
   append(&start, 1);
   append(&start, 3);
   append(&start, 1);
   append(&start, 2);
   append(&start, 1);
   cout << "Node count using iterative approach: " << count_iterative(start) << endl;
   cout << "Node count using recursion: " << count_recursive(start);
}

आउटपुट

Node count using iterative approach: 5
Node count using recursion: 5

  1. सी ++ में लिंक्ड सूची में लूप की लंबाई पाएं

    इस समस्या में, हमें एक लिंक की गई सूची दी जाती है जिसमें लूप हो सकते हैं। हमारा कार्य लिंक्ड सूची में लूप की लंबाई ज्ञात करना है। समस्या का विवरण: हमें लूप में नोड्स की संख्या गिनने की आवश्यकता है यदि इसमें लूप है अन्यथा -1 लौटाएं। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट: लिंक्ड-लिस्

  1. C++ में एक बाइनरी ट्री (पुनरावर्ती और पुनरावर्ती) में पूर्ण नोड्स की गणना करें

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

  1. C++ में एक बाइनरी ट्री (पुनरावर्ती और पुनरावर्ती) में आधे नोड्स की गणना करें

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