মডিউল ১১-৬ঃ Delete Node in a Linked List
Last updated
Last updated
প্রবলেম লিংকঃ Delete Node in a Linked List
প্রবলেম স্টেটমেন্টঃ প্রবলেম টি মিডিয়াম লেভেলের হলেও প্রবলেমটি খুবই সিম্পল। এখানে আমাদেরকে একটি সিংগলি লিংক্ড লিস্টের একটি নোড দেওয়া থাকবে, সেই নোডটি ডিলিট করতে হবে। এখানে আমাদেরকে লিঙ্কড লিস্টের হেড দেওয়া হবে না। সল্যুশনঃ আমরা যখনই লিংকড লিস্টের কোন নোড ডিলেট করেছি আমরা ডিলিট করা নোডের প্রিভিয়াস নোডে যেতাম এবং প্রিভিয়াস নোড এর সাথে ডিলিট করা নোডের নেক্সট নোডের কানেকশন করে দিতাম। তাহলে মাঝখান থেকে ওই নোডটি ডিলিট হয়ে যেত। কিন্তু এখানে যেহেতু আমাকে যেই নোডটি ডিলিট করতে হবে সেই নোডটি দেওয়া থাকবে তাই এখানে আমাদের প্রিভিয়াস নোডে যাওয়ার কোন অপশন নেই। যেহেতু এটি সিংগলি লিংকড লিস্ট, তাই একটি নোড থেকে তার প্রিভিয়াস নোডে যাওয়া যাচ্ছে না এই ক্ষেত্রে।
সেক্ষেত্রে আমরা যেটা করতে পারি আমরা যেই নোডে আছি আমরা তার পরবর্তী নোডটি ডিলিট করে দিব এবং পরবর্তী নোডের ভ্যালু এই নোডে স্টোর করে রেখে দিব। তাহলেই হয়ে যাবে। ব্যাপারটা আমরা একটু ভিজুয়ালি দেখি।
ধরে নেই আমাদের লিঙ্কড লিস্টটি এরকমঃ
এখানে থেকে আমাদেরকে ২০ নোডটি ডিলিট করতে হবে। তাহলে ডিলিট করার পর লিস্টটি থাকবে এরকমঃ 10 -> 30 -> 40 -> NULL
নোডের মধ্যে তার নেক্সট নোডের ভেলু রেখে দিতে পারি। node->val = node->next->val;
নেক্সট নোডকে একটি ডিলিট নোড পয়েন্টারে রেখে দিতে পারি, যেহেতু এটি আমরা ডিলিট করব। ListNode *deleteNode = node->next;
নোডের নেক্সটে তার নেক্সটের নেক্সট নোডকে কানেক্ট করে দিতে পারি। node->next = node->next->next;
এরপর ডিলিটনোডকে ডিলিট করে দিলেই হয়ে যাবে। delete deleteNode;
20 ডিলিট করে দেওয়ার পর এখন আমাদের লিস্টটি আছে এরকমঃ 10 -> 30 -> 40 -> NULL যেমনটি আমরা চেয়েছিলাম।
ডাটা স্ট্রাকচার কোর্সের গিটবুকগুলো আপনাদের কেমন লাগছে ? আমাদেরকে জানাতে পারেন। https://forms.gle/t3uHWc3mgFRu1iTi8