Stack is a commonly used Data Structure in programming. You can imaging a Programming Stack as similar to any real world stack. A stack of chairs, a stack of cards. What goes inside the stack first comes out last, Or what goes in a stack last comes out first.
Thus an Stack is a Last in First Out (LIFO) Structure of Data
Let’s get familiar with certain programming terms before diving into the implementation. When we put a new data element in a Stack we are doing a push, when we get the element from the stack we are doing a pull, When we are checking the top most element of stack without removing it from stack, its a peek.
Implementation in Java
package info.FiveBalloons.Examples; import java.util.Arrays; public class TheStack { private String[] stackArray; private int stackSize; private int topOfStack = -1; TheStack(int stackSize){ this.stackSize = stackSize; stackArray = new String[this.stackSize]; Arrays.fill(stackArray, "-1"); } //Push operation public void push(String data){ if(topOfStack +1 < stackSize){ topOfStack++; stackArray[topOfStack] = data; System.out.println("PUSH: New data element "+data+" is pushed into stack"); }else{ System.out.println("Stack is full"); } } //Pop Operation public String pop(){ if(topOfStack >= 0){ System.out.println("POP: top data element "+stackArray[topOfStack]+" is removed from stack"); stackArray[topOfStack] = "-1"; return stackArray[topOfStack--]; }else{ System.out.println("Sorry but the stack is empty"); return "-1"; } } // Peek operation public String peek() { System.out.println("PEEK: " + stackArray[topOfStack] + " is at the top of the Stack."); return stackArray[topOfStack]; } // Using our Stack public static void main(String[] args ) { TheStack theStack = new TheStack(10); theStack.push("5Balloons"); theStack.push("Programming"); theStack.push("Tutorials"); theStack.peek(); theStack.pop(); theStack.pop(); theStack.pop(); } }
This program will produce the following output.
PUSH: New data element 5Balloons is pushed into stack
PUSH: New data element Programming is pushed into stack
PUSH: New data element Tutorials is pushed into stack
PEEK: Tutorials is at the top of the Stack.
POP: top data element Tutorials is removed from stack
POP: top data element Programming is removed from stack
POP: top data element 5Balloons is removed from stack
PUSH: New data element Programming is pushed into stack
PUSH: New data element Tutorials is pushed into stack
PEEK: Tutorials is at the top of the Stack.
POP: top data element Tutorials is removed from stack
POP: top data element Programming is removed from stack
POP: top data element 5Balloons is removed from stack