কম্পিউটার

C++ ব্যবহার করে প্রদত্ত একক লিঙ্কযুক্ত তালিকায় একটি উপাদান অনুসন্ধান করুন


এককভাবে লিঙ্কযুক্ত তালিকা দেওয়া হলে, কাজটি লিঙ্কযুক্ত তালিকায় একটি নির্দিষ্ট উপাদান অনুসন্ধান করা। যদি উপাদানটি পাওয়া যায়, তাহলে "বর্তমান" অন্যথায় "উপস্থিত নয়" প্রিন্ট করুন। উদাহরণস্বরূপ,

ইনপুট-1

1→ 2→ 3→ 4→ 5→ 6

‘7’ অনুসন্ধান করা হচ্ছে

আউটপুট

Not Present

ব্যাখ্যা - প্রদত্ত এককভাবে লিঙ্ক করা তালিকায় উপাদান '7' উপস্থিত নেই, তাই আমরা আউটপুটটিকে "উপস্থিত নয়" হিসাবে ফিরিয়ে দেব।

ইনপুট-2

1→ 2→ 3→ 4→ 5

'2' অনুসন্ধান করা হচ্ছে

আউটপুট

Present

ব্যাখ্যা − যেহেতু প্রদত্ত এককভাবে লিঙ্কযুক্ত তালিকায় উপাদান '2' উপস্থিত রয়েছে তাই আমরা আউটপুটটিকে "প্রেজেন্ট" হিসাবে ফিরিয়ে দেব।

এই সমস্যা সমাধানের পদ্ধতি

প্রদত্ত এককভাবে লিঙ্কযুক্ত তালিকায় একটি নির্দিষ্ট উপাদান অনুসন্ধান করার জন্য দুটি পদ্ধতি রয়েছে; লিঙ্ক করা তালিকায় একটি উপাদান উপস্থিত আছে কিনা তা আমাদের বারবার পরীক্ষা করতে হবে।

যদি লিঙ্ক করা তালিকা খালি থাকে, আমরা মিথ্যা ফেরত দেব অন্যথায় যদি বর্তমান নোডের ডেটা মান ইনপুট উপাদানের সমান হয় তবে আমরা সত্য ফেরত দেব। অন্য পদ্ধতিতে, আমরা উপাদানটিকে পুনরাবৃত্তভাবে পরীক্ষা করি যদি এটি বর্তমান হেড পয়েন্টারের সমান হয় বা না হয় এবং সেই অনুযায়ী সত্য বা মিথ্যা ফেরত দেয়।

  • ইনপুট নিন এবং এটিতে নোড সন্নিবেশ করে একটি এককভাবে লিঙ্ক করা তালিকা শুরু করুন৷

  • একটি বুলিয়ান রিকারসিভ ফাংশন serhRecursive(নোড*হেড, int এলিমেন্ট) লিঙ্ক করা তালিকার হেড পয়েন্টার এবং মূল উপাদানটিকে একটি প্যারামিটার হিসেবে নেয়।

  • প্রাথমিকভাবে যদি হেডটি 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. C++ এ লিঙ্ক করা তালিকার বিকল্প নোডের যোগফল

  2. C++ এ রিভার্স লিঙ্কড লিস্ট II

  3. এককভাবে লিঙ্ক করা তালিকাকে C++ এ বৃত্তাকার লিঙ্কযুক্ত তালিকায় রূপান্তর করুন

  4. C++ এ পুনরাবৃত্তি ব্যবহার করে লিঙ্ক করা তালিকার বিকল্প নোড প্রিন্ট করুন