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

C++ . का उपयोग करके दी गई एकल लिंक्ड सूची में एक तत्व खोजें

एकल लिंक की गई सूची को देखते हुए, कार्य लिंक की गई सूची में किसी विशेष तत्व को खोजना है। यदि तत्व पाया जाता है, तो "वर्तमान" प्रिंट करें अन्यथा "मौजूद नहीं"। उदाहरण के लिए,

इनपुट-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' मौजूद नहीं है, इसलिए हम "वर्तमान में नहीं" लौटते हैं।


  1. सी++ में लिंक्ड सूची के वैकल्पिक नोड्स का योग

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

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

    इस ट्यूटोरियल में, हम सिंगल लिंक्ड लिस्ट को सर्कुलर लिंक्ड लिस्ट में बदलने के प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें सिंगल लिंक्ड लिस्ट उपलब्ध कराई जाएगी। हमारा काम उस सूची के तत्वों को लेना और उसे एक सर्कुलर लिंक्ड लिस्ट में बदलना है। उदाहरण #include <bits/stdc++.h> //node structure of lin

  1. सी ++ में रिकर्सन का उपयोग करके लिंक की गई सूची के वैकल्पिक नोड्स प्रिंट करें

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