স্ট্যাক পর্ব - ২ (Algorithm + Implementation)

আজকে আমরা স্ট্যাকের অপারেশন গুলো ভিজুয়ালাইজ করার চেষ্টা করবো।
আমরা মূলত PUSH(X), POP( ), DISPLAY( ) এই তিনটা ফাংশন নিয়ে আলোচনা করবো।

Stacks in C++
চিত্রঃ স্ট্যাক

আমরা শুরু থেকে শুরু করছি। সর্বপ্রথমে আমরা ধরে নিই যে আমাদের স্ট্যাক টা খালি। তাহলে আমাদের TOP এর ভ্যালু নাল থাকবে। অর্থাৎ TOP= -1.
এছাড়াও আমাদের স্ট্যাকটিতে সর্বোচ্চ N টি ভ্যালু রাখতে পারবো। অর্থাৎ MAX_SIZE= N.

PUSH(X):
এখন আমি PUSH(X) এই অপারেশন টা চালাবো। অর্থাৎ স্ট্যাকে X ভ্যালুটি ইনসার্ট করতে চাচ্ছি। এর জন্যে প্রথমেই আমাদের চেক করতে হবে STACKOVERFLOW হচ্ছে কিনা!!
অর্থাৎ যদি TOP< ( MAX_SIZE - 1) হয় তাহলে আমরা PUSH(X) অপারেশন টা করতে পারবো। কিন্তু তার আগে TOP র ভ্যালু এক বাড়িয়ে নিবো এবং স্ট্যাকের TOP তম ইন্ডেক্সে X ভ্যালু এসাইন করে দিবো। অর্থাৎ,
 TOP++;
 STACK[ TOP ] = X ;

অন্যথায় TOP=( MAX_SIZE - 1) হয়ে গেলে STACKOVERFLOW হয়ে যাবে !!

নিচে এর অ্যালগোরিদমটি দিলাম।
PUSH(Value) :
1. Start 2. IF( TOP < MAX_SIZE - 1 ) then goto Step 3 Else goto Step 6 3. TOP = TOP + 1 4. STACK[ TOP ] = Value 5. PRINT "Successfully Inserted" 6. ELSE PRINT "STACK OVERFLOW" 7. End
POP( ) : প্রথমে এখানে আমরা চেক করবো Stack Underflow হচ্ছে কিনা। অর্থাৎ TOP = -1 কিনা। যদি TOP = -1  হয় তাহলে বুঝবো স্ট্যাক খালি। অর্থাৎ STACK UNDERFLOW.
আর যদি TOP > -1 হয় তবে প্রথমে Temporary Memory তে Stack র ভ্যালুটি স্টোর করবো। তারপর TOP র ভ্যালু কমিয়ে দিবো। এরপর স্ক্রিনে শো করে দিবো যে Temporary Memory র ভ্যালুটি সফলভাবে ডিলিট হয়ে গেছে।

নিচে এর অ্যালগোরিদমটি দিলাম। POP( ) : 1. START 2. IF ( TOP = -1) then goto Step 3 Else goto Step 4
3. PRINT "STACK UNDERFLOW. Stack is Empty" and goto Step 07
4. ELSE Temp = STACK[ TOP ] 5. TOP = TOP - 1
6. PRINT "Temp is Successfully Deleted "
[এখানে Temp বলতে Temp র অভ্যন্তরের ভ্যালুটি প্রিন্ট করতে বলা হয়েছে ] 7. End

DISPLAY( ) :
ডিসপ্লে করার সময় প্রথমে চেক করবো STACK খালি কিনা। অর্থাৎ TOP= -1 কিনা। যদি হয় তবে "STACK Empty". অন্যথায় একটা লুপ চালাবো ০ তম ইন্ডেক্স থেকে TOP তম ইন্ডেক্স পর্যন্ত এবং প্রিন্ট করতে থাকবো Stack[ i ] .

নিচে এর অ্যালগোরিদমটি দিলাম। DISPLAY( ) : 1. START 2. IF ( TOP = -1 ) goto Step 04 else goto Step 04
3. PRINT "STACK is Empty" and goto Step
4. ELSE i = 0
5. While( i <= TOP ) goto Step 06 else goto step 07
6. PRINT STACK[ i ] 7. i = i + 1 8. END

আশা করছি এর কোডটি ইমপ্লিমেন্ট করে ফেলতে পারবেন। তবুও সহায়তার জন্যে নিচে আমার করা কোডের লিঙ্কটি দিচ্ছি।
লিঙ্ক:
https://github.com/sayanta28/DSA/blob/master/Stack.c

Practice Problem: 

Comments

Popular Posts