मान लीजिए कि हमारे पास दो एकल-लिंक्ड सूचियां हैं। हमें सिंगल लिंक्ड लिस्ट दोनों में कॉमन नोड्स की कुल संख्या का पता लगाना है। इसलिए अगर दो सूचियां [15, 16, 10, 9, 7, 17] और [15, 16, 40, 6, 9] जैसी हैं, तो तीन सामान्य नोड हैं।
सूची में प्रत्येक नोड के लिए दो नेस्टेड लूप का उपयोग करके सूची के अंत तक दोनों सूचियों को पार करें, जांचें कि यह दूसरी सूची के किसी भी नोड से मेल खाता है या नहीं। यदि कोई मेल मिलता है, तो काउंटर बढ़ाएँ, और अंत में गिनती लौटाएँ।
उदाहरण
#include<iostream> using namespace std; class Node { public: int data; Node *next; }; void prepend(Node** start, int new_data) { Node* new_node = new Node; new_node->data = new_data; new_node->next = NULL; if ((*start) != NULL){ new_node->next = (*start); *start = 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->next; } ptr1 = *start2; ptr = ptr->next; } return count; } int main() { Node* first = NULL; Node* second = NULL; prepend(&first, 15); prepend(&first, 16); prepend(&first, 10); prepend(&first, 9); prepend(&first, 7); prepend(&first, 17); prepend(&second, 15); prepend(&second, 16); prepend(&second, 40); prepend(&second, 6); prepend(&second, 9); cout << "Number of common nodes:" << countCommonNodes(&first, &second); }
आउटपुट
Number of common nodes:3