Stack Introduction and Implementation in Java
Stack is more abstract entity than array and many other data structures. The underlying mechanism used to implement stacks is not visible to the user.
It follows Last In First Out (LIFO) principle i.e., stacks allows access to only one data item at a time, that is inserted last. If you remove the last item then you can access the next item that is next to that last item inserted.
Stack operations
- Push – Adds an item to the collection.
- Pop – Removes the most recently added item from the collection.
Applications of stack
- Most microprocessor uses stack based architecture. The stack operations are built into the microprocessor.
- Old pocket calculators used stack based architecture.
Stack Implementation in Java
The following program implements a stack in java using a class called MyStack.
package com.sneppets.dsalgo;
class MyStack
{
//max stack array size
private int maxStackArraySize;
//stack array
private long[] myStackArray;
//stack top
private int top;
//constructor
public MyStack(int size)
{
//set stack array size
maxStackArraySize = size;
//create array
myStackArray = new long[maxStackArraySize];
//no elements in the stack array yet
top = -1;
}
public void push(long element)
{
//increment top and insert the element in top of the stack array
myStackArray[++top] = element;
}
public long pop()
{
//access the element from the top of the stack array
return myStackArray[top--];
}
public long peek()
{
//peek at the top of the stack array
return myStackArray[top];
}
public boolean isEmpty()
{
//return true is stack array is empty
return (top == -1);
}
public boolean isFull()
{
//return true if stack array is full
return (top == maxStackArraySize-1);
}
}
/*
* author: sneppets.com
*/
public class StackExample {
public static void main (String[] args)
{
//create new stack
MyStack myStack = new MyStack(5);
//push elements on to your new stack
myStack.push(3);
myStack.push(5);
myStack.push(7);
myStack.push(9);
//delete elements from stack until the stack is empty
while( !myStack.isEmpty())
{
long element = myStack.pop();
System.out.println(element);
}
}
}
Output
9 7 5 3

