৬-৫ঃ যেকোন পজিশনের ভ্যালু Deletion

আমরা গত মডিউল গুলাতে শিখেছি কীভাবে একটি Singly Linked List এ Node Insert করতে হয় , এইবার দেখবো কীভাবে লিঙ্কড লিস্ট থেকে কীভাবে একটি ভ্যালু ডিলিট করতে হয়। প্রথমে দেখবো কীভাবে যেকোন পজিশন/ ইন্ডেক্স এর Node Delete করতে হয়। ধরেন নিচের চিত্রের ২ নাম্বার index এর Node টি delete করতে বলা হয়েছে।

Drawing

Working Procedure :

  1. প্রথমে temp কে যে index ডিলিট করতে হবে তার আগের Node এ নিয়ে যাবো।

  2. এরপর temp->next কে delete_node এ স্টোর করে রাখবো যাতে পরবর্তীতে delete করতে পারি।

  3. temp->next এ temp->next->next স্টোর করবো। কারণ temp->next এ আছে যে Node ডিলিট করতে হবে সেই Node , তার নেক্সট এ আছে delete_node এর পরবর্তী Node. এখন আমরা delete করতে হবে যে Node কে তার পূর্ববর্তী Node এর next এ delete_node এর পরবর্তী node এর এড্রেস রেখে দিচ্ছি। এর মাধ্যমে delete_node আর এই লিঙ্কড লিস্টের মধ্যে থাকবে না।

  4. সবশেষে delete keyword ব্যবহার করে delete_node কে মেমরি থেকে delete করে দিবো।

আসুন এইবার কোড দেখে নেয়া যাক। Code:

void delete_at_position(Node *&head, int position)
{

    Node *temp = head;

    for (int i = 1; i <= position - 1; i++) // আগের লজিক ব্যবহার করে tmp কে যে index এ Node ডিলিট করতে হবে ঐ পজিশনে নিয়ে গেলাম
    {
        temp = temp->next;
    }
    Node* delete_node = temp->next; //  temp->next কে delete_node এ স্টোর করে রাখলাম যাতে পরবর্তীতে delete করতে পারি। 
    temp->next = temp->next->next; // temp->next এ যে Node ডিলিট করতে হবে তার পরবর্তী Node রেখে দিলাম 
    delete delete_node; // ঐ নোড ডিলিট করে দিলাম 
}

আগের মতো এই মেথডে head Node কে ডিলিট করা যায় না। পরবর্তী মডিউলে আমরা head node কীভাবে delete করতে হয় তা জানবো।

Last updated