এই পোস্টে, আমরা লিনিয়ার ডেটা স্ট্রাকচার এবং নন-লিনিয়ার ডেটা স্ট্রাকচারের পার্থক্য বুঝব।
লিনিয়ার ডেটা স্ট্রাকচার
এই ধরনের স্ট্রাকচারের উপাদানগুলো ক্রমাগত সাজানো থাকে।
প্রতিটি উপাদান লিনিয়ার স্ট্রাকচার ট্রাভার্স করে অ্যাক্সেস করা যায়।
লিনিয়ার স্ট্রাকচারের সব উপাদান একক লেভেলে থাকে, অর্থাৎ কোনো হায়ারার্কি নেই।
এগুলো বাস্তবায়ন ও ব্যবহার করা সহজ।
এগুলো বেশি মেমরি ব্যবহার করে, তাই সেগুলো খুব মেমরি-ফ্রেন্ডলি নয়।
লিনিয়ার ডেটা স্ট্রাকচারের টাইম কমপ্লেক্সিটি সাধারণত স্ট্রাকচারের আকার বাড়লে বাড়ে।
উদাহরণ: লিস্ট, অ্যারে, স্ট্যাক
নিচে পাইথনে লিস্টের একটি উদাহরণ দেখানো হল।
my_list = [45, 42, 12, 34, 56, 7] print(my_list)
আউটপুট
[45, 42, 12, 34, 56, 7]
নন-লিনিয়ার ডেটা স্ট্রাকচার
উপাদানগুলো হায়ারার্কিক্যাল ফ্যাশনে সংরক্ষিত থাকে।
সেগুলো 'নোড' ব্যবহার করে একে অপরের সাথে সংযুক্ত থাকে।
এই স্ট্রাকচারের উপাদানগুলো বিভিন্ন লেভেলে থাকে, একক লেভেলে নয়।
বাস্তবায়ন করা সহজ নয়।
এগুলো সহজে ট্রাভার্স করা যায় না- একটি নন-লিনিয়ার ডেটা স্ট্রাকচার সম্পূর্ণ ট্রাভার্স করতে একাধিক ইটারেশন লাগে।
এগুলো মেমরি-ফ্রেন্ডলি, অর্থাৎ মেমরি দক্ষতার সাথে ব্যবহার করে।
নন-লিনিয়ার ডেটা স্ট্রাকচারের টাইম কমপ্লেক্সিটি ডেটার আকার বাড়লেও একই থাকে।
উদাহরণ: ম্যাপ, ট্রি, গ্রাফ
নিচের উদাহরণে দেখানো হলো কিভাবে একটি গ্রাফ ডিফাইন করা হয়- এতে নোড ইন্টারকানেকশনও ডিফাইন করতে হয়।
উদাহরণ
graph = {'A': ['B', 'C'], 'B': ['C'], 'C': ['D', 'E'], 'D': ['C'], 'E': ['F', 'G'], 'F': ['C']}