ব্যাখ্যা
সঠিক উত্তর: (খ) Stack
ডেটা স্ট্রাকচার সম্পর্কিত প্রোগ্রামিং ধারণায় **Push** এবং **Pop** অপারেশনগুলো মূলত **স্ট্যাক (Stack)** নামক একটি বিশেষ ডেটা স্ট্রাকচারের সাথে সম্পর্কিত।
---
**স্ট্যাক (Stack) সম্পর্কে বিস্তারিত তথ্য:**
— স্ট্যাক হলো একটি **লিনিয়ার ডেটা স্ট্রাকচার**, যা **LIFO (Last In, First Out)** নীতির উপর ভিত্তি করে কাজ করে। অর্থাৎ, সর্বশেষ যে উপাদানটি স্ট্যাকে প্রবেশ করানো হয়, সেটিই প্রথমে বের হয়ে আসে।
— স্ট্যাকের প্রধান দুটি অপারেশন হলো **Push** এবং **Pop**:
— **Push**: স্ট্যাকে নতুন একটি উপাদান যোগ করা।
— **Pop**: স্ট্যাক থেকে সর্বশেষ যোগ করা উপাদানটি সরিয়ে ফেলা।
— স্ট্যাকের অন্যান্য গুরুত্বপূর্ণ অপারেশনগুলোর মধ্যে রয়েছে **Peek/Top** (স্ট্যাকের শীর্ষ উপাদান দেখা) এবং **isEmpty** (স্ট্যাক খালি কিনা তা যাচাই করা)।
— স্ট্যাকের উদাহরণ হিসেবে **ওয়েব ব্রাউজারের ব্যাক বাটন**, **ফাংশন কল স্ট্যাক**, অথবা **ক্যালকুলেটরের হিস্ট্রি** উল্লেখযোগ্য।
— স্ট্যাক সাধারণত **অ্যারে** বা **লিঙ্কড লিস্ট** ব্যবহার করে ইমপ্লিমেন্ট করা হয়।
— স্ট্যাকের সময় জটিলতা (Time Complexity):
— Push: O(1)
— Pop: O(1)
— Peek: O(1)
— Search: O(n) (কারণ স্ট্যাকের উপাদানগুলোকে ক্রমানুসারে খুঁজতে হয়)।
---
**ভুল অপশনগুলোর বিশ্লেষণ:**
✗ **ক) Queue**:
— Queue হলো একটি **FIFO (First In, First Out)** ডেটা স্ট্রাকচার, যেখানে প্রথমে প্রবেশ করা উপাদানই প্রথমে বের হয়ে আসে।
— Queue-এর প্রধান অপারেশনগুলো হলো **Enqueue** (উপাদান যোগ করা) এবং **Dequeue** (উপাদান সরানো)।
— Push এবং Pop অপারেশনগুলো Queue-এর সাথে সম্পর্কিত নয়।
✗ **গ) Union**:
— Union হলো একটি **সেট থিওরি** সম্পর্কিত অপারেশন, যেখানে দুটি সেটের সমস্ত উপাদানকে একত্রিত করা হয়।
— এটি ডেটা স্ট্রাকচারের অংশ নয় এবং এর সাথে Push/Pop অপারেশনের কোনো সম্পর্ক নেই।
✗ **ঘ) Array**:
— Array হলো একটি **স্থির আকারের** ডেটা স্ট্রাকচার, যেখানে উপাদানগুলো ক্রমানুসারে সংরক্ষিত থাকে।
— Array-এর ক্ষেত্রে উপাদান যোগ বা অপসারণের জন্য নির্দিষ্ট ইন্ডেক্স ব্যবহার করা হয়, যেমন **insert()**, **delete()**, অথবা **append()**।
— Push এবং Pop অপারেশনগুলো সাধারণত Array-এর জন্য ব্যবহৃত হয় না; এগুলো স্ট্যাকের জন্য নির্দিষ্ট।
---
উৎস:
— *Introduction to Algorithms* by Cormen, Leiserson, Rivest, and Stein (CLRS) – ডেটা স্ট্রাকচার অধ্যায়।
— *Data Structures and Algorithms in Python/Java/C++* by Michael T. Goodrich, Roberto Tamassia, and Michael H. Goldwasser।
— BCS Preliminary পরীক্ষার পূর্ববর্তী বছরের প্রশ্নপত্র (২০১০-২০২৩)।