লিঙ্কড লিস্ট (Linked List)
লিঙ্কড লিস্ট হলো একটি ডেটা স্ট্রাকচার যেখানে ডেটা উপাদানগুলি (nodes) সংলগ্ন থাকে এবং প্রতিটি উপাদান পরবর্তী উপাদানের সাথে একটি লিঙ্কের মাধ্যমে যুক্ত থাকে। এটি অ্যারের তুলনায় বেশি কার্যকর, কারণ এটি ডাইনামিক মেমরি ব্যবস্থাপনা এবং সহজে উপাদান যোগ এবং অপসারণের সুবিধা প্রদান করে।
লিঙ্কড লিস্টের প্রধান তিনটি প্রকার হল:
- সিঙ্গেল লিঙ্কড লিস্ট (Singly Linked List)
- ডাবল লিঙ্কড লিস্ট (Doubly Linked List)
- সার্কুলার লিঙ্কড লিস্ট (Circular Linked List)
১. সিঙ্গেল লিঙ্কড লিস্ট (Singly Linked List)
সিঙ্গেল লিঙ্কড লিস্টে প্রতিটি নোডে একটি ডেটা এবং একটি পরবর্তী নোডের পয়েন্টার থাকে। এটি একমাত্র দিকে চলে যায়, অর্থাৎ প্রতিটি নোড শুধুমাত্র পরবর্তী নোডের দিকে লিঙ্ক করা থাকে।
নোডের ডিক্লারেশন (C উদাহরণ):
struct Node {
int data; // ডেটা সদস্য
struct Node* next; // পরবর্তী নোডের পয়েন্টার
};
সিঙ্গেল লিঙ্কড লিস্টের উদাহরণ:
// সিঙ্গেল লিঙ্কড লিস্ট তৈরি এবং উপাদান যোগ করা
struct Node* head = NULL; // লিস্টের হেড পয়েন্টার
২. ডাবল লিঙ্কড লিস্ট (Doubly Linked List)
ডাবল লিঙ্কড লিস্টে প্রতিটি নোডে তিনটি উপাদান থাকে: একটি ডেটা, একটি পূর্ববর্তী নোডের পয়েন্টার এবং একটি পরবর্তী নোডের পয়েন্টার। এটি উভয় দিকে লিঙ্কেড থাকে।
নোডের ডিক্লারেশন (C উদাহরণ):
struct Node {
int data; // ডেটা সদস্য
struct Node* next; // পরবর্তী নোডের পয়েন্টার
struct Node* prev; // পূর্ববর্তী নোডের পয়েন্টার
};
ডাবল লিঙ্কড লিস্টের উদাহরণ:
// ডাবল লিঙ্কড লিস্ট তৈরি এবং উপাদান যোগ করা
struct Node* head = NULL; // লিস্টের হেড পয়েন্টার
৩. সার্কুলার লিঙ্কড লিস্ট (Circular Linked List)
সার্কুলার লিঙ্কড লিস্টে নোডগুলির শেষ নোড পরবর্তী নোডের পয়েন্টারকে প্রথম নোডের দিকে নির্দেশ করে। এটি একদিকে লিঙ্কড হয়ে থাকে, কিন্তু এটি একটি সার্কুলার স্ট্রাকচার তৈরি করে।
নোডের ডিক্লারেশন (C উদাহরণ):
struct Node {
int data; // ডেটা সদস্য
struct Node* next; // পরবর্তী নোডের পয়েন্টার
};
সার্কুলার লিঙ্কড লিস্টের উদাহরণ:
// সার্কুলার লিঙ্কড লিস্ট তৈরি
struct Node* head = NULL; // লিস্টের হেড পয়েন্টার
লিঙ্কড লিস্টের সুবিধা এবং অসুবিধা
সুবিধা:
- ডাইনামিক মেমরি: লিঙ্কড লিস্টের আকার চলাকালীন পরিবর্তিত হতে পারে, তাই এটি মেমরি ব্যবহারকে অধিক কার্যকরী করে।
- সহজে উপাদান যোগ এবং অপসারণ: নতুন উপাদান যোগ করা এবং মুছে ফেলা সহজ এবং দ্রুত।
অসুবিধা:
- স্মৃতি ব্যবহার: প্রতিটি নোডে অতিরিক্ত পয়েন্টারের জন্য আরও মেমরি প্রয়োজন।
- অ্যাক্সেস টাইম: অ্যারেতে উপাদান অ্যাক্সেসের সময় O(1), কিন্তু লিঙ্কড লিস্টে O(n) সময় লাগে।
উপসংহার
লিঙ্কড লিস্ট হল একটি শক্তিশালী ডেটা স্ট্রাকচার যা ডেটাকে সংগঠিত এবং পরিচালনা করতে সহায়তা করে। সিঙ্গেল, ডাবল এবং সার্কুলার লিঙ্কড লিস্টের প্রতিটির নিজস্ব সুবিধা এবং ব্যবহার আছে, এবং উপযুক্ত পরিস্থিতিতে এগুলোর ব্যবহার ডেটার দক্ষতা এবং কার্যকারিতা বাড়াতে সাহায্য করে।
Read more