স্ট্যাক হলো লাস্ট ইন ফার্স্ট আউট (LIFO) ডেটা স্ট্রাকচার। এই ডেটা স্ট্রাকচারের বিভিন্ন দিকে কিছু গুরুত্বপূর্ণ অ্যাপ্লিকেশন রয়েছে। নিচে সেগুলো দেওয়া হলো −
- এক্সপ্রেশন হ্যান্ডলিং −
ইনফিক্স টু পোস্টফিক্স বা ইনফিক্স টু প্রিফিক্স কনভার্শন −
স্ট্যাক ব্যবহার করে কিছু ইনফিক্স এক্সপ্রেশন এর পোস্টফিক্স বা প্রিফিক্স সমতুল্য কনভার্ট করা যায়। এই পোস্টফিক্স বা প্রিফিক্স নোটেশন কম্পিউটারে এক্সপ্রেশন এক্সপ্রেস করতে ব্যবহৃত হয়। এই এক্সপ্রেশনগুলো ইনফিক্সের মতো পরিচিত নয়, কিন্তু এদের কিছু বড় সুবিধা রয়েছে। আমাদের অপারেটর অর্ডার এবং প্যারেনথেসিস মেইনটেইন করতে হয় না।
পোস্টফিক্স বা প্রিফিক্স ইভ্যালুয়েশন −
প্রিফিক্স বা পোস্টফিক্স নোটেশনে কনভার্ট করার পর, রেজাল্ট পেতে এক্সপ্রেশন ইভ্যালুয়েট করতে হয়। সেটাও স্ট্যাক ডেটা স্ট্রাকচারের সাহায্যে করা যায়।
ব্যাকট্র্যাকিং প্রোসিজার −
ব্যাকট্র্যাকিং হলো একটি অ্যালগরিদম ডিজাইন টেকনিক। সেটার জন্য আমরা কোনো পাথে ডুবি, যদি সেটা এফিশিয়েন্ট না হয়, তবে প্রিভিয়াস স্টেটে ফিরে আসি এবং অন্য পাথে যাই। করেন্ট স্টেট থেকে ফিরে আসার জন্য, প্রিভিয়াস স্টেট সংরক্ষণ করতে হয়। সেটার জন্য স্ট্যাক দরকার। ব্যাকট্র্যাকিং এর উদাহরণ হলো নাইট টুর সমস্যা বা N-কুইন সমস্যার সমাধান খুঁজে বের করা।
- স্ট্যাকের আরেকটি দুর্দান্ত ব্যবহার হলো ফাংশন কল এবং রিটার্ন প্রসেসের время। যখন আমরা একটি ফাংশন অন্য ফাংশন থেকে কল করি, সেটা ফাস্ট স্টেটমেন্ট নাও হতে পারে। ফাংশন কল করার পর, আমাদের ফাংশন এরিয়া থেকে সেটা জায়গায় ফিরে আসতে হয়, যেখানে আমরা কন্ট্রোল ছেড়ে দিয়েছিলাম। তাই আমরা টাস্ক রিজিউম করতে চাই, রিস্টার্ট নয়। সেটার কারণ, আমরা প্রোগ্রাম কাউন্টারের ঠিকানা স্ট্যাকে সংরক্ষণ করি, তারপর ফাংশন বডিতে যায় এক্সিকিউট করতে। এক্সিকিউশন কম্প্লিট হলে, স্ট্যাক থেকে ঠিকানা পপ করে প্রোগ্রাম কাউন্টারে অ্যাসাইন করে এবং টাস্ক রিজিউম করে।