উপাত্ত সংগঠন

কম্পিউটার বিজ্ঞানে উপাত্ত সংগঠন ([Data structure, ডেটা স্ট্রাক্‌চার] ত্রুটি: {{Lang-xx}}: text has italic markup (সাহায্য)) বলতে উপাত্তকে কম্পিউটারে রাখার একটি নির্দিষ্ট উপায়কে বোঝায় যাতে উপাত্তকে দক্ষতার সাথে ব্যবহার করা যায়। যত্নের সাথে বাছাই করা উপাত্ত সংগঠন উপাত্তের উপর সবচেয়ে দক্ষ অ্যালগোরিদমের ব্যবহার সম্ভব করে তোলে। একটি সুপরিকল্পিত উপাত্ত সংগঠন মেমরি ও সময় যথাসম্ভব বাঁচিয়ে উপাত্তের উপর অনেকগুলি জরুরি অপারেশন প্রয়োগ করার ক্ষমতা দেয়। কোন একটি প্রোগ্রামিং ভাষাতে প্রদত্ত উপাত্ত টাইপ, রেফারেন্স ও অপারেশন অনুসারে উপাত্ত সংগঠনগুলি বাস্তবায়ন করা হয়। এ্যাপ্লিকেশনের ধরনের উপর ডাটা স্ট্রাকচারের শ্রেণিবিভাগ হয়ে থাকে এবং এদের মধ্যে অনেকগুলো নির্দিষ্ট কিছু কাজের জন্য বিশেষভাবে তৈরি করা হয়। উদাহরণস্বরূপ, বি-ট্রিগুলো ডাটাবেসের ক্ষেত্রে প্রয়োগ করার জন্য বিশেষভাবে উপযুক্ত এবং রুটিং টেবিলগুলো মেশিন নেটওয়ার্কের উপর নির্ভরশীল। বিভিন্ন ধরনের প্রোগ্রামের ডিজাইনে, ডাটা স্ট্রাকচারের বাছাইকরণ একটি অন্যতম প্রধান বিষয়। বড় ধরনের সিস্টেম তৈরির অভিজ্ঞতা থেকে জানা যায় যে, চূড়ান্ত ফলাফলের মান ও সার্থকতা অনেকাংশে শ্রেষ্ঠ ডাটা স্ট্রাকচার বাছাই করার উপর নির্ভরশীল। ডাটা স্ট্রাকচার বাছাই করার পর, এ্যালগরিদমের ব্যবহার অবশ্যম্ভাবী হয়ে ওঠে। অবশ্য কখনো এর বিপরীত পদ্ধতিও অবলম্বন করা হয় এবং এক্ষেত্রে কোন নির্দিষ্ট এ্যালগরিদমের জন্য উপযুক্ত ডাটা স্ট্রাকচার বাছাই করা হয়। উভয় ক্ষেত্রেই প্রয়োজনীয় ডাটা স্ট্রাকচারের বাছাইকরণ অত্যন্ত জরুরী। সুসংগঠিত ডিজাইন পদ্ধতি এবং প্রোগ্রামিং ভাষাগুলোর গভীর বিশ্লেষণের মাধ্যমে জানা যায় যে, এ্যালগরিদমের বদলে ডাটা স্ট্রাকচারই হল প্রধান সাংগঠনিক উপকরণ। অনেক প্রোগ্রামিং ভাষা বেশ কিছু মডিউল সিস্টেম ব্যবহার করে যার মাধ্যমে বিভিন্ন এ্যাপ্লিকেশনের জন্য ডাটা স্ট্রাকচারগুলো ব্যবহার করা যায়। এজন্য নিয়ন্ত্রিত ইণ্টারফেসের আড়ালে তাদের সুনির্দিষ্ট প্রয়োগপদ্ধতিগুলো আড়াল করে রাখা হয়। অবজেক্ট-ওরিয়েণ্টড প্রোগ্রামিং ভাষা যেমন সি++ এবং জাভা এই উদ্দেশ্য বিভিন্ন ক্লাস ব্যবহার করে। ডাটা স্ট্রাকচারের অত্যধিক গুরুত্বের কারণে অনেক প্রোগ্রামিং ভাষার লাইব্রেরিতে এদের অন্তর্ভুক্ত করা হয়। সি++ এর স্ট্যাণ্ডার্ড টেমপ্লেট লাইব্রেরী কণ্টেইনার্স, জাভার কালেকশন্স ফ্রেমওয়ার্ক এবং মাইক্রোসফটের .নেট ফ্রেমওয়ার্কে এই পদ্ধতি অবলম্বন করা হয়। অ্যারে, স্ট্যাক, কিউ, লিংকড লিস্ট, ট্রি, গ্রাফ, সার্চিং এবং সর্টিং, ইত্যাদি কতগুলি বহুল ব্যবহৃত উপাত্ত সংগঠন। ডাটা স্ট্রাকচার ইম্লিমেণ্টেশন বা ইণ্টারফেসের প্রতিনিধিত্ব করে। একটি ডাটা স্ট্রাকচারকে দু’টি ফাংশনের মাঝে একটি ইণ্টারফেস হিসেবে দেখা যায় বা সংশ্লিষ্ট ডাটা টাইপের মাধ্যমে সাজানো ও সংরক্ষিত তথ্যভাণ্ডার প্রয়োগ করার একটি পদ্ধতি হিসেবে দেখা যায়। নির্দিষ্ট সংখ্যক, একই ধরনের তথ্য নির্দেশনাকে অ্যারে বলা হয় ৷ যেমন, কোন বিদ্যালয়ের 200 জন ছাত্রের বয়স, অ্যারে-র মাধ্যমে প্রকাশ করা হল ৷ অন্যান্য ভেরিয়েবলের মতই অ্যারে ঘোষিত হয় ৷ স্ট্যাক হল এমন একটি রৈখিক গঠন যাহার শূধুমাত্র একদিকেই তথ্য যুক্ত করা যায় বা মুছে দেওয়া যায় ৷ উদাহরণ হিসেবে বলা যায় টেবিলের উপর কিছু সংখ্যক বই (একটি অন্যটির উপর) , যার শুধুমাত্র উপরের বইটি সরান যাবে বা এর উপর অন্য আরেকটি বই রাখা যাবে ৷ স্ট্যাককে ইংরেজিতে বলা হয় LIFO (Last in first out) ডাটা স্ট্রাকচার। কিউ বাংলা মানে লাইনে দাড়ানো ৷ কিউ হচ্ছে এমন একটি সরল রৈখিক গঠন যাহার শুধুমাত্র পশ্চাদ্ভাগে তথ্য যুক্ত এবং সম্মুখভাগ থেকে মুছে ফেলা যায় ৷ এই দুই প্রান্তকে যথাক্রমে "REAR" & "FRONT" বলা হয় ৷ কিউকে ইংরেজিতে বলা হয় FIFO ( First in first out) ডাটা স্ট্রাকচার। লিংকড লিষ্ট বাংলা মানে সংযুক্ত তালিকা। কম্পিউটার বিজ্ঞানে, ট্রি একটি বহুল ব্যবহৃত ডাটা স্ট্রাকচার যা উপাদান গুলোর মধ্যে ক্রম অনুযায়ী সম্পর্ক নির্দেশ করার জন্য ব্যবহার করা হয় । এর একটি রুট মান এবং এর সঙ্গে সম্পর্কযুক্ত প্যারেন্ট (পিতা) নোডের সাথে সাবট্রি হিসেবে চাইল্ড (শিশু) নোডের একটি সেট সংযুক্ত থাকে । ট্রি একটি  অরৈখিক ডাটা স্ট্রাকচার যা নোড ও প্রান্ত দ্বারা গঠিত এবং এটি কোনো বৃত্তাকার চক্র গঠন করে না।  ট্রির সঙ্গে কোন নোড না থাকলে তাকে বলা হয় নাল বা খালি ট্রি।  রুট প্যারেন্ট চাইল্ড পূর্বপুরুষ উত্তরাধিকারী প্যারেন্ট ট্রির উচ্চতা নোডের উচ্চতা লিফ লেভেল গভীরতা ফরেস্ট