ডেটা স্ট্রাকচার (Data Structure): মেমরিতে বিপুল পরিমাণ ডেটা এমনভাবে সুবিন্যস্ত রাখা যাতে বিভিন্ন গাণিতিক ও যৌক্তিক অপারেশন (যেমন সন্ধান, সংযোজন, অপসারণ) সর্বনিম্ন সময়ে ও মেমরিতে সম্পন্ন করা যায়। Abstract Data Type (ADT) হলো ডেটার এমন এক গাণিতিক রূপরেখা যা ডেটার ওপর কী কী অপারেশন করা যাবে তা নির্দিষ্ট করে, কিন্তু মেমরিতে কীভাবে তা বাস্তবায়িত হবে তা অভ্যন্তরীণভাবে গোপন রাখে।
ডেটা স্ট্রাকচারের শ্রেণিবিন্যাস প্রধানত দুটি ভাগে বিভক্ত:
- প্রিমিটিভ বনাম নন-প্রিমিটিভ: প্রিমিটিভ ডেটা টাইপ (যেমন
int,float,char) সরাসরি প্রসেসরের নির্দেশ দ্বারা পরিচালিত হয়। নন-প্রিমিটিভ ডেটা স্ট্রাকচার প্রিমিটিভ উপাদানগুলোর সমন্বয়ে গঠিত জটিল রূপ (যেমন অ্যারে, স্ট্যাক, কিউ, লিঙ্কড লিস্ট)। - লিনিয়ার বনাম নন-লিনিয়ার: লিনিয়ার ডেটা স্ট্রাকচারে উপাদানগুলো ক্রমানুসারে একটির পর একটি অবস্থান করে, যেখানে প্রথম ও শেষ উপাদান ব্যতীত প্রতিটির একটি পূর্বসূরী (predecessor) ও উত্তরসূরী (successor) থাকে। নন-লিনিয়ার ডেটা স্ট্রাকচারে উপাদানগুলো বহু-স্তরে বা জালিকার আকারে বিন্যস্ত থাকে (যেমন ট্রি ও গ্রাফ)।
- স্ট্যাটিক বনাম ডায়নামিক: স্ট্যাটিক কাঠামোতে কম্পাইল টাইমে নির্দিষ্ট আকারের মেমরি বরাদ্দ হয় (যেমন ফিক্সড অ্যারে); ডায়নামিক কাঠামোতে প্রোগ্রাম চলার সময় প্রয়োজন অনুযায়ী হিপ মেমরি বরাদ্দ ও মুক্ত করা হয় (যেমন লিঙ্কড লিস্ট)।
যেকোনো পূর্ণাঙ্গ ডেটা স্ট্রাকচারে প্রধানত ছয়টি মৌলিক অপারেশন সম্পন্ন করা যায়:
- ট্রাভার্সাল (Traversal): কাঠামোর প্রতিটি উপাদানকে নির্দিষ্ট ক্রমে অন্তত একবার পরিদর্শন ও প্রসেস করা।
- ইনসার্শন (Insertion): কাঠামোর নির্দিষ্ট অবস্থানে নতুন উপাদান যুক্ত করা।
- ডিলিশন (Deletion): কাঠামো থেকে নির্দিষ্ট উপাদান অপসারণ করে মেমরি মুক্ত করা।
- সার্চিং (Searching): নির্দিষ্ট কি-এর (Key) মান মেমরিতে আছে কি না এবং তার অবস্থান খুঁজে বের করা।
- সর্টিং (Sorting): উপাদানগুলোকে মানের ঊর্ধ্বক্রম বা নিম্নক্রমে সুবিন্যস্ত করা।
- মার্জিং (Merging): দুটি পৃথক সুবিন্যস্ত কাঠামোর উপাদানগুলোকে একটি একক সুবিন্যস্ত কাঠামোতে একত্রিত করা।
| কাঠামোর ধরন | উপাদানের বিন্যাস | মেমরি বরাদ্দ | ট্রাভার্সাল জটিলতা | প্রধান উদাহরণ |
|---|---|---|---|---|
| লিনিয়ার স্ট্রাকচার | একমাত্রিক ক্রমিক সম্পর্ক (পূর্বসূরী ও উত্তরসূরী) | ধারাবাহিক (অ্যারে) বা পয়েন্টার দ্বারা সংযুক্ত (লিস্ট) | $O(n)$ রৈখিক ট্রাভার্সাল | 1D/2D অ্যারে, স্ট্যাক, কিউ, লিঙ্কড লিস্ট |
| নন-লিনিয়ার স্ট্রাকচার | হায়ারারকিক্যাল বহু-স্তরীয় বা জালিকা সম্পর্ক | হিপ মেমরিতে পয়েন্টারভিত্তিক সংযোগ | রিকার্সিভ ট্রাভার্সাল (Pre/In/Post-order) | বাইনারি ট্রি, বাইনারি সার্চ ট্রি (BST), গ্রাফ |