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

C++ में दो डबल लिंक्ड सूचियों में सामान्य नोड्स की संख्या ज्ञात करें


मान लीजिए कि हमारे पास दो डबल-लिंक्ड सूचियां हैं। हमें दोनों डबल लिंक्ड लिस्ट में कॉमन नोड्स की कुल संख्या का पता लगाना है। इसलिए अगर दो सूचियां [15, 16, 10, 9, 7, 17] और [15, 16, 40, 6, 9] जैसी हैं, तो तीन सामान्य नोड हैं।

सूची में प्रत्येक नोड के लिए दो नेस्टेड लूप का उपयोग करके सूची के अंत तक दोनों सूचियों को पार करें, जांचें कि यह दूसरी सूची के किसी भी नोड से मेल खाता है या नहीं। यदि कोई मेल मिलता है, तो काउंटर बढ़ाएँ, और अंत में गिनती लौटाएँ।

उदाहरण

#include<iostream>
using namespace std;
class Node {
   public:
      int data;
   Node *back, *front;
};
void append(Node** start, int new_data) {
   Node* new_node = new Node;
   new_node->data = new_data;
   new_node->back = NULL;
   new_node->front = (*start);
   if ((*start) != NULL)
      (*start)->back = new_node;
   (*start) = new_node;
}
int countCommonNodes(Node** start1, Node** start2) {
   Node* ptr = *start1;
   Node* ptr1 = *start2;
   int count = 0;
   while (ptr != NULL) {
      while (ptr1 != NULL) {
         if (ptr->data == ptr1->data) {
            count++;
            break;
         }
         ptr1 = ptr1->front;
      }
      ptr1 = *start2;
      ptr = ptr->front;
   }
   return count;
}
int main() {
   Node* first = NULL;
   Node* second = NULL;
   append(&first, 15);
   append(&first, 16);
   append(&first, 10);
   append(&first, 9);
   append(&first, 7);
   append(&first, 17);
   append(&second, 15);
   append(&second, 16);
   append(&second, 40);
   append(&second, 6);
   append(&second, 9);
   cout << "Number of common nodes:" << countCommonNodes(&first, &second);
}

आउटपुट

Number of common nodes:3

  1. सी++ में डबल लिंक्ड लिस्ट का आकार खोजने का कार्यक्रम

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

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

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

  1. C++ में एक बाइनरी ट्री के दो नोड्स के बीच की दूरी का पता लगाएं

    मान लें कि हमारे पास कुछ नोड्स के साथ एक बाइनरी ट्री है। हमें दो नोड्स u और v के बीच की दूरी ज्ञात करनी है। मान लीजिए कि पेड़ नीचे जैसा है - अब (4, 6) =4 के बीच की दूरी, पथ की लंबाई 4 है, (5, 8) के बीच की लंबाई =5 आदि। इस समस्या को हल करने के लिए, हम एलसीए (सबसे कम सामान्य पूर्वज) ढूंढेंगे, फिर