কম্পিউটার

দ্বিগুণ লিঙ্কযুক্ত তালিকা থেকে সমস্ত নোড মুছুন যা C++ এ প্রদত্ত মানের চেয়ে বড়


এই টিউটোরিয়ালে, আমরা শিখব কিভাবে একটি দ্বিগুণ লিঙ্কযুক্ত তালিকা থেকে সমস্ত প্রাইম নোড মুছে ফেলতে হয়।

আসুন সমস্যা সমাধানের পদক্ষেপগুলি দেখি৷

  • ডাটা, আগের এবং পরবর্তী পয়েন্টার দিয়ে struct লিখুন।

  • দ্বিগুণ লিঙ্কযুক্ত তালিকায় নোড সন্নিবেশ করার জন্য একটি ফাংশন লিখুন।

  • ডামি ডেটা সহ দ্বিগুণ লিঙ্কযুক্ত তালিকা শুরু করুন।

  • দ্বিগুণ লিঙ্কযুক্ত তালিকার উপর পুনরাবৃত্তি করুন। বর্তমান নোড ডেটা প্রদত্ত মানের চেয়ে বেশি কিনা তা সন্ধান করুন৷

  • যদি বর্তমান ডেটা প্রদত্ত মানের থেকে বেশি হয়, তাহলে নোডটি মুছুন।

  • নোড মুছে ফেলার জন্য একটি ফাংশন লিখুন। নোড মুছে ফেলার সময় নিম্নলিখিত তিনটি ক্ষেত্রে বিবেচনা করুন।

    • যদি নোডটি হেড নোড হয়, তাহলে মাথাটি পরবর্তী নোডে নিয়ে যান৷

    • যদি নোডটি মধ্যবর্তী নোড হয়, তাহলে পরবর্তী নোডটিকে আগের নোডের সাথে লিঙ্ক করুন

    • যদি নোডটি শেষ নোড হয়, তাহলে পূর্ববর্তী নোড লিঙ্কটি সরিয়ে দিন।

উদাহরণ

আসুন কোডটি দেখি।

#include নেমস্পেস ব্যবহার করে std;struct Node { int data; নোড *prev, *next;};void insertNode(Node** head_ref, int new_data) { Node* new_node =(Node*)malloc(sizeof(struct Node)); নতুন_নোড->ডেটা =নতুন_ডেটা; new_node->prev =NULL; new_node->next =(*head_ref); যদি ((*head_ref) !=NULL) { (*head_ref)->prev =new_node; } (*head_ref) =new_node;}void deleteNode(Node** head_ref, Node* del) { if (*head_ref ==NULL || del ==NULL) { ফেরত; } যদি (*head_ref ==del) { *head_ref =del->পরবর্তী; } যদি (del->পরবর্তী!=NULL) { del->next->prev =del->prev; } if (del->prev !=NULL) { del->prev->next =del->next; } বিনামূল্যে (ডেল); return;}void deleteGreaterNode(Node** head_ref, int K) { Node* temp =*head_ref; নোড* পরবর্তী; while (temp !=NULL) { next =temp->next; if (temp->data> K) { deleteNode(head_ref, temp); } temp =পরবর্তী; }} void printLinkedList(Node* head) { while (head !=NULL) { cout <data <<" -> "; head =head->পরবর্তী; }}int main() { Node* head =NULL; insertNode(&head, 1); insertNode(&head, 2); insertNode(&head, 3); insertNode(&head, 4); insertNode(&head, 10); insertNode(&head, 11); insertNode(&head, 12); int K =10; cout <<"মোছার আগে লিঙ্ক করা তালিকা:" < 

আউটপুট

আপনি যদি উপরের প্রোগ্রামটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

মোছার আগে লিঙ্ক করা তালিকা:12 -> 11 -> 10 -> 4 -> 3 -> 2 -> 1 ->মোছার পরে লিঙ্ক করা তালিকা:10 -> 4 -> 3 -> 2 -> 1 -> 

উপসংহার

টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।


  1. C++ এ প্রদত্ত নোড থেকে k দূরত্বে সমস্ত নোড প্রিন্ট করুন

  2. C++ এ একটি লিফ নোড থেকে k দূরত্বে থাকা সমস্ত নোড প্রিন্ট করুন

  3. একটি তালিকার সমস্ত মান যা পাইথনে প্রদত্ত মানের চেয়ে বেশি তা পরীক্ষা করার জন্য প্রোগ্রাম

  4. পাইথন প্রোগ্রাম একটি তালিকার সমস্ত মান প্রদত্ত মানের চেয়ে বড় কিনা তা পরীক্ষা করতে