৬-৩ঃ যেকোন পজিশনে ভ্যালু Insertion
গত মডিউলে আমরা দেখেছি কীভাবে linked list এর শেষে একটি Node insert করা যায় , এই মডিউলে দেখবো কীভাবে লিঙ্কড লিস্টের যেকোন পজিশনে একটি Node insert করা যায় তা দেখবো। প্রথমে দেখে নেয়া যাক Initial অবস্থায় আমাদের linked list টা দেখতে কেমন। এখানে সুবিধার জন্য আমরা indexing করে নিয়েছি।
এখন ধরেন , আমরা চাচ্ছি ২ নাম্বার ইন্ডেক্স এ একটি নতুন Node এড করবো । এর জন্য আমাদের কী করতে হবে তা ছবির মাধ্যমে দেখি।
Working Procedure:
নতুন Node বানাবো , যেটাকে New_node বলতে পারি
যে index এ Node এড করবো ঐ index এর আগের Node এ যাবো ,যেটাকে আমরা Previous_node বলতে পারি। একই সাথে index এ যে Node আছে তাকে আমরা next_node বলতে পারি।
New_node এর next পয়েন্টার এ next_node কে রেখে দিবো।
Previous_Node এর next পয়েন্টার এ new_node এর এড্রেস রেখে দিবো
এইভাবেই যেকোন পজিশনে আমরা ভ্যালু Insert করতে পারবো । আসেন এইবার কোড টা দেখে নেয়া যাক
Code:
#include <bits/stdc++.h>
using namespace std;
class Node // একটা node class create করবো।
{
public:
int val;
Node *next;
Node(int val)
{
this->val = val;
this->next = NULL;
}
};
void insert_at_position(Node *&head, int index, int value)
{
Node *newNode = new Node(value); // নতুন Node বানিয়ে নিলাম
Node *temp = head; // temp পয়েন্টার এ head রেখে দিলাম
for (int i = 1; i <= index - 1; i++)
{
temp = temp->next;
}
// এখানে temp এ যে index এ Node insert করতে হবে তার previous Node আছে
// temp->next এ আছে তার পরের Node
newNode->next = temp->next; // New_node এর next পয়েন্টার এ next_node কে রেখে দিলাম
temp->next = newNode; //Previous_Node এর next পয়েন্টার এ new_node এর এড্রেস রেখে দিলাম
}
insert_at_position() ফাংশনের লুপের logic: আমরা যদি 2 number index এ Node insert করতে চাই তবে আমাদের temp কে 1 number index এ নিয়ে যেতে হবে। যেহেতু আমাদের temp , head এ পয়েন্ট করা থাকে , তাহলে temp কে একবার move করলে 1 number index এর Node এ চলে যাবে , তার মানে index-1 = 2-1 = 1 বার লুপ চালাতে হয়েছে। এই মেথডে head এ কোনো Node insert করা যাবে না। নেক্সট মডিউলে আমরা head এ Node insert করা দেখবো।
Last updated