Stack Data Structure Last Updated : 30 Mar, 2024 Improve Improve Like Article Like Save Share Report Stack is a linear data structure that follows a particular order in which the operations are performed. The order may be LIFO(Last In First Out) or FILO(First In Last Out). LIFO implies that the element that is inserted last, comes out first and FILO implies that the element that is inserted first, comes out last. Table of Content What is Stack Data Structure? Basic Operations of Stack Data Structures Applications of Stack Data Structures Basics of Stack Data Structure Implementations of Stack in Different Languages Other Implementations of Stack Data Structures Easy Problems on Stack Data Structures Medium Problems on Stack Data Structures Hard Problems on Stack Data Structures What is Stack Data Structure? A stack is a linear data structure that follows the Last-In-First-Out (LIFO) principle. It behaves like a stack of plates, where the last plate added is the first one to be removed. Basic Operations of Stack Data Structures: Push: Adds an element to the top of the stack. Pop: Removes the top element from the stack. Peek: Returns the top element without removing it. IsEmpty: Checks if the stack is empty. IsFull: Checks if the stack is full (in case of fixed-size arrays). Applications of Stack Data Structures: Recursion Expression Evaluation and Parsing Depth-First Search (DFS) Undo/Redo Operations Browser History Basics of Stack Data Structure: Introduction to Stack – Data Structure and Algorithm Tutorials Basic Operations in Stack Data Structure Introduction to Monotonic Stack Implement a stack using singly linked list Applications, Advantages and Disadvantages of Stack Implementations of Stack in Different Languages: Stack in C++ STL Stack Class in Java Stack in Python Stack in C# Implementation of Stack in JavaScript Other Implementations of Stack Data Structures: Implement Queue using Stacks Design and Implement Special Stack Data Structure | Added Space Optimized Version Implement two stacks in an array Implement Stack using Queues How to efficiently implement k stacks in a single array? Design a stack that supports getMin() in O(1) time and O(1) extra space Implement a stack using single queue How to implement stack using priority queue or heap? Create a customized data structure which evaluates functions in O(1) Implement Stack and Queue using Deque Easy Problems on Stack Data Structures: Infix to Postfix Conversion using Stack Prefix to Infix Conversion Prefix to Postfix Conversion Postfix to Prefix Conversion Postfix to Infix Convert Infix To Prefix Notation Check for balanced parentheses in an expression Arithmetic Expression Evalution Evaluation of Postfix Expression Reverse a stack using recursion Reverse individual words Reverse a string using stack Reversing a Queue Medium Problems on Stack Data Structures: How to create mergable stack? The Stock Span Problem Next Greater Element Next Greater Frequency Element Maximum product of indexes of next greater on left and right Iterative Tower of Hanoi Sort a stack using a temporary stack Reverse a stack without using extra space in O(n) Delete middle element of a stack Check if a queue can be sorted into another queue using a stack Check if an array is stack sortable Iterative Postorder Traversal | Set 1 (Using Two Stacks) Largest Rectangular Area in a Histogram | Set 2 Find maximum of minimum for every window size in a given array Find index of closing bracket for a given opening bracket in an expression Find maximum difference between nearest left and right smaller elements Delete consecutive same words in a sequence Check mirror in n-ary tree Reverse a number using stack Reversing the first K elements of a Queue Hard Problems on Stack Data Structures: The Celebrity Problem Print next greater number of Q queries Iterative Postorder Traversal | Set 2 (Using One Stack) Print ancestors of a given binary tree node without recursion Length of the longest valid substring Expression contains redundant bracket or not Find if an expression has duplicate parenthesis or not Find next Smaller of next Greater in an array Iterative method to find ancestors of a given binary tree Stack Permutations (Check if an array is stack permutation of other) Spaghetti Stack Remove brackets from an algebraic string containing + and – operators Range Queries for Longest Correct Bracket Subsequence Quick Links : ‘Practice Problems’ on Stack ‘Videos’ on Stack ‘Quizzes’ on Stack Recommended: Learn Data Structure and Algorithms | DSA Tutorial Stack in Scala Like Article Suggest improvement Next What is Stack? A Complete Tutorial Share your thoughts in the comments Add Your Comment Please Login to comment...