লিংকড লিস্ট এবং সেট ডেটা স্ট্রাকচার সি শার্পে (C#) ব্যবহৃত হয় ডেটা সংরক্ষণ এবং অ্যাক্সেসের জন্য। প্রতিটি স্ট্রাকচার বিভিন্ন উদ্দেশ্যে কার্যকর এবং তাদের নিজস্ব সুবিধা ও সীমাবদ্ধতা রয়েছে। লিংকড লিস্ট এবং সেট সম্পর্কে বিস্তারিত আলোচনা করা হলো।
লিংকড লিস্ট হলো একটি ডেটা স্ট্রাকচার, যেখানে ডেটা উপাদানগুলো আলাদা আলাদা নোড হিসেবে সংরক্ষিত থাকে। প্রতিটি নোডে একটি ডেটা এবং একটি পয়েন্টার থাকে যা পরবর্তী নোডের ঠিকানা ধারণ করে।
সি শার্পে LinkedList<T>
জেনেরিক ক্লাস ব্যবহার করে লিংকড লিস্ট তৈরি করা হয়। এটি System.Collections.Generic
নেমস্পেসের অন্তর্ভুক্ত।
using System;
using System.Collections.Generic;
namespace LinkedListExample
{
class Program
{
static void Main(string[] args)
{
// লিংকড লিস্ট ডিক্লেয়ারেশন এবং ইনিশিয়ালাইজেশন
LinkedList<string> names = new LinkedList<string>();
// লিংকড লিস্টে উপাদান যোগ করা
names.AddLast("Alice");
names.AddLast("Bob");
names.AddFirst("Charlie");
// লিংকড লিস্ট প্রদর্শন
foreach (string name in names)
{
Console.WriteLine(name);
}
// নির্দিষ্ট অবস্থানে উপাদান যোগ করা
LinkedListNode<string> node = names.Find("Alice");
names.AddAfter(node, "Dave");
Console.WriteLine("\nAfter Adding 'Dave' After 'Alice':");
foreach (string name in names)
{
Console.WriteLine(name);
}
}
}
}
আউটপুট:
plaintext
Copy code
Charlie
Alice
Bob
After Adding 'Dave' After 'Alice':
Charlie
Alice
Dave
Bob
সেট হলো এমন একটি ডেটা স্ট্রাকচার, যেখানে ডুপ্লিকেট উপাদান রাখা হয় না। প্রতিটি উপাদান সেটে অনন্য হয় এবং সেটে উপাদানগুলোর কোন নির্দিষ্ট ক্রম থাকে না।
সি শার্পে HashSet<T>
এবং SortedSet<T>
ক্লাস ব্যবহার করে সেট তৈরি করা হয়।
using System;
using System.Collections.Generic;
namespace SetExample
{
class Program
{
static void Main(string[] args)
{
HashSet<int> numbers = new HashSet<int>();
// সেটে উপাদান যোগ করা
numbers.Add(10);
numbers.Add(20);
numbers.Add(30);
numbers.Add(20); // ডুপ্লিকেট, তাই সেটে যোগ হবে না
Console.WriteLine("HashSet Elements:");
foreach (int number in numbers)
{
Console.WriteLine(number);
}
// একটি নির্দিষ্ট উপাদান আছে কিনা যাচাই
Console.WriteLine("\nContains 20: " + numbers.Contains(20));
}
}
}
আউটপুট:
HashSet Elements:
10
20
30
Contains 20: True
using System;
using System.Collections.Generic;
namespace SortedSetExample
{
class Program
{
static void Main(string[] args)
{
SortedSet<string> fruits = new SortedSet<string>();
// SortedSet এ উপাদান যোগ করা
fruits.Add("Apple");
fruits.Add("Banana");
fruits.Add("Mango");
fruits.Add("Banana"); // ডুপ্লিকেট, তাই সেটে যোগ হবে না
Console.WriteLine("SortedSet Elements:");
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}
}
}
}
আউটপুট:
SortedSet Elements:
Apple
Banana
Mango
HashSet
-এ অনুসন্ধান অপারেশন দ্রুত সম্পন্ন হয়।SortedSet
উপাদানগুলোকে স্বয়ংক্রিয়ভাবে ক্রমানুসারে রাখে।HashSet
-এ উপাদানগুলোর কোনো নির্দিষ্ট ক্রম থাকে না।বৈশিষ্ট্য | লিংকড লিস্ট | সেট |
---|---|---|
ডুপ্লিকেট | ডুপ্লিকেট সংরক্ষণ করা যায় | ডুপ্লিকেট অনুমোদিত নয় |
ইনডেক্স | ইনডেক্স ব্যবহারে সরাসরি অ্যাক্সেস নেই | ইনডেক্স ব্যবহারে সরাসরি অ্যাক্সেস নেই |
সংরক্ষণ | পয়েন্টার ভিত্তিক | হ্যাশ বা সটিং ভিত্তিক |
ব্যবহার | ডাইনামিক আকারের তালিকা | অনন্য উপাদানের সংগ্রহ |
ক্রম | ইনডেক্স ভিত্তিক, সাধারণত ক্রম থাকে | HashSet -এ কোনো ক্রম নেই; SortedSet -এ ক্রমানুসারে থাকে |
সি শার্পে লিংকড লিস্ট এবং সেট বিভিন্ন ধরনের ডেটা সংরক্ষণের জন্য কার্যকর। লিংকড লিস্ট ডায়নামিক আকারের তালিকা তৈরি করতে সহায়ক, যেখানে সহজে উপাদান যোগ এবং মুছে ফেলা যায়। অন্যদিকে, সেট ডুপ্লিকেট উপাদান ছাড়া একটি সংগ্রহ তৈরি করতে ব্যবহৃত হয় এবং সাধারণত দ্রুত অনুসন্ধান ও ক্রমানুসারে উপাদান সংরক্ষণ করতে সাহায্য করে।
আরও দেখুন...