मान लीजिए कि हमारे पास दो डबल-लिंक्ड सूचियां हैं। हमें दोनों डबल लिंक्ड लिस्ट में कॉमन नोड्स की कुल संख्या का पता लगाना है। इसलिए अगर दो सूचियां [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