একটি স্ট্যাক হল একটি বিমূর্ত ডেটা টাইপ (ADT), যা সাধারণত বেশিরভাগ প্রোগ্রামিং ভাষায় ব্যবহৃত হয়। এটিকে স্ট্যাক নাম দেওয়া হয়েছে কারণ এটি একটি বাস্তব-বিশ্বের স্ট্যাকের মতো আচরণ করে, উদাহরণস্বরূপ - তাসের ডেক বা প্লেটের স্তূপ ইত্যাদি।

একটি স্ট্যাক শুধুমাত্র এক প্রান্তে অপারেশন করার অনুমতি দেয়। এই বৈশিষ্ট্যটি এটিকে LIFO ডেটা গঠন করে তোলে। LIFO এর অর্থ হল Last-in-first-out। এখানে, যে উপাদানটি সর্বশেষে রাখা হয়েছে (ঢোকানো বা যোগ করা হয়েছে), প্রথমে অ্যাক্সেস করা হয়েছে। স্ট্যাকের পরিভাষায়, সন্নিবেশ অপারেশনকে PUSH অপারেশন এবং অপসারণ অপারেশনকে POP অপারেশন বলা হয়।
নিম্নলিখিত চিত্রটি স্ট্যাকের অপারেশনগুলি দেখায় −

স্ট্যাক −
প্রতিনিধিত্ব করার জন্য সম্পূর্ণ জাভাস্ক্রিপ্ট ক্লাস নিচে দেওয়া হলউদাহরণ
class Stack {
constructor(maxSize) { // Set default max size if not provided
if (isNaN(maxSize)) {
maxSize = 10;
}
this.maxSize = maxSize; // Init an array that'll contain the stack values.
this.container = [];
}
display() {
console.log(this.container);
}
isEmpty() {
return this.container.length === 0;
}
isFull() {
return this.container.length >= this.maxSize;
}
push(element) { // Check if stack is full
if (this.isFull()) {
console.log("Stack Overflow!") return;
}
this.container.push(element)
}
pop() { // Check if empty
if (this.isEmpty()) {
console.log("Stack Underflow!") return;
}
this.container.pop()
}
peek() {
if (isEmpty()) {
console.log("Stack Underflow!");
return;
}
return this.container[this.container.length - 1];
}
clear() {
this.container = [];
}
}