एकल लिंक की गई सूची को देखते हुए, कार्य लिंक की गई सूची में किसी विशेष तत्व को खोजना है। यदि तत्व पाया जाता है, तो "वर्तमान" प्रिंट करें अन्यथा "मौजूद नहीं"। उदाहरण के लिए,
इनपुट-1 -
1→ 2→ 3→ 4→ 5→ 6
‘7’ के लिए खोजा जा रहा है
आउटपुट -
Not Present
स्पष्टीकरण - दी गई सिंगल लिंक्ड लिस्ट में तत्व '7' मौजूद नहीं है, इसलिए हम आउटपुट को "नॉट प्रेजेंट" के रूप में वापस कर देंगे।
इनपुट-2 -
1→ 2→ 3→ 4→ 5
‘2’ के लिए खोजा जा रहा है
आउटपुट -
Present
स्पष्टीकरण - चूंकि दी गई सिंगल लिंक्ड लिस्ट में तत्व '2' मौजूद है, इसलिए हम आउटपुट को "प्रेजेंट" के रूप में वापस कर देंगे।
इस समस्या को हल करने का तरीका
दी गई एकल लिंक्ड सूची में किसी विशेष तत्व को खोजने के लिए दो दृष्टिकोण हैं; हमें बार-बार जांचना होगा कि लिंक की गई सूची में एक तत्व मौजूद है या नहीं।
यदि लिंक की गई सूची खाली है, तो हम झूठी वापसी करेंगे अन्यथा यदि डेटा मान वाला वर्तमान नोड इनपुट तत्व के बराबर है तो हम सत्य वापस आ जाएंगे। दूसरे दृष्टिकोण में, हम तत्व को पुनरावृत्त रूप से जांचते हैं कि क्या यह वर्तमान हेड पॉइंटर के बराबर है या नहीं और तदनुसार सही या गलत लौटाता है।
-
इनपुट लें और उसमें नोड्स डालकर सिंगल लिंक्ड लिस्ट को इनिशियलाइज़ करें।
-
एक बूलियन रिकर्सिव फ़ंक्शन searchhRecursive(node*head, int element) लिंक की गई सूची के हेड पॉइंटर और मुख्य तत्व को पैरामीटर के रूप में लेता है।
-
प्रारंभ में यदि शीर्ष NULL है या यदि लिंक की गई सूची खाली है तो झूठी वापसी करें।
-
यदि खोजा जाने वाला तत्व लिंक की गई सूची के वर्तमान शीर्ष के बराबर है तो सही लौटें।
उदाहरण
#include<iostream> using namespace std; #include<iostream> using namespace std; class node{ public: int data; node*next; node(int d){ data=d; node*next= NULL; } }; void insertAt(node*&head, int data){ node*n= new node(data); n->next= head; head= n; } bool searchRecursive(node*head,int key){ if(head==NULL){ return false; } if(head->data==key){ return true; } else{ return searchRecursive(head->next, key); } } void printNode(node*head){ while(head!=NULL){ cout<<head->data<<"->"; head=head->next; } cout<<endl; } int main(){ node*head= NULL; insertAt(head,5); insertAt(head,4); insertAt(head,3); insertAt(head,2); insertAt(head,1); printNode(head); if(searchRecursive(head,7)){ cout<<"present"<<endl; } else{ cout<<"Not Present"<<endl; } }
आउटपुट
उपरोक्त कोड को चलाने से आउटपुट इस प्रकार उत्पन्न होगा,
Not Present
चूंकि दी गई लिंक की गई सूची में 1→2→3→4→5 तत्व '7' मौजूद नहीं है, इसलिए हम "वर्तमान में नहीं" लौटते हैं।