Share

3 টি উত্তর

ধরো, তোমার মা একগাদা প্লেট ধুতে নিয়ে যাচ্ছে খাওয়ার টেবিল থেকে। সবার পরে যেটা রাখা হবে, সেই প্লেটটাকে কিন্তু সবার উপরে রাখা হবে, আর সেটাই কিন্তু সবার আগে ধোয়া হবে। এই জিনিসটাকে বলে স্ট্যাক। মানে আমরা সবার পরে যাকে প্রসেসিং করতে ঢুকাচ্ছি তাকে যদি আগে প্রসেসিং করি তাহলে সেটাই স্ট্যাক। STL এ স্ট্যাক ব্যবহার করতে হয় এভাবে। stack< int > st; st.push( 100 ); // inserting 100 st.push( 101 ); // inserting 101 st.push( 102 ); // inserting 102 while( !st.empty() ) { cout << st.top() << endl; // printing the top st.pop(); // removing that one } কিউ

সংক্ষেপে, স্ট্যাক হল স্তুপ। আর বিশদভাবে বলতে গেলে, স্ট্যাক হল কতগুলো আইটেমের এমন এক কাঠামোবদ্ধ (স্ট্রাকচারড - structured) সংগ্রহশালা (কালেকশন - collection) যেখানে নতুন আইটেমের সংযোজন (পুশ - push) বা পুরনো আইটেমের অপসারণ (পপ - pop) সংগ্রহশালার একই প্রান্তে হয়। ব্যাপারটা ঠিক বোঝা গেল না, তাই না? কোন ব্যাপার না। একটা উদাহরণ দিলেই ব্যাপারটা পরিষ্কার হয়ে যাবে।

image

পাঁচটা খাবার প্লেটের একটা স্তুপ (স্ট্যাক) কল্পনা করা যাক। আমরা যদি এই স্তুপে নতুন একটা প্লেট (আইটেম) সংযোজন (পুশ) করতে চাই তবে ষষ্ঠতম প্লেটটা স্তুপের একেবারে উপরে রাখতে হবে। এখন আমাদের কাছে ছয়টা প্লেটের একটা স্তুপ আছে। এবার যদি এই স্তুপ থেকে একটা প্লেট (আইটেম) অপসারণ (পপ) করতে চাই তবে ষষ্ঠতম প্লেটটাই কিন্তু অপসারণ করতে হবে। খেয়াল করলে দেখব, যে একই প্রান্তে এই কাজগুলো করছি সেটার একটা নাম দেয়া যায় – উপর বা টপ (Top)। আর এর অপর প্রান্তকে বলা যায় নিচ বা বেইস (Base)।

আমরা এই ডেটা স্ট্রাকচার কে  লাস্ট-ইন-ফার্স্ট-আউট (LIFO) ডেটা স্ট্রাকচার বলে থাকি। কারণ, আমরা সবার শেষে যে আইটেমটা সংযোজন (পুশ) করছি সেটাই কিন্তু সবার আগে অপসারণ (পপ) করছি। মানে, ঢুকছে সবার শেষে কিন্তু বের হচ্ছে সবার আগে।

স্ট্যাক হল কোনো জিনিস সাজানোর ধরনে।ধরা যাক কতগুলি ইট একটার উপর আরেকটা সাজ্জিত। এই যে একটার ওপর আরেকটা বসিয়ে একটা কাঠামো তৈরি করা হলো, এই কাঠামোটার নামই স্ট্যাক।