Statement
I created an Stack using array and created its Three Basic operations i.e. PUSH , POP and Top.
where PUSH is insertion operation.
POP is deletion operation.
Top just returns variable at top of stack.
I also added Logic of "Overflow" and "Underflow" state with some exception handling.
The code is explained in details using comments .
To Tinker the inputs and check the operations Click Here
Code
import java.util.*;
public class Template {
static int max_size;
static int top ;
int temp;
static int arr[];
public void Stack(int size) {
arr = new int[size];
max_size = arr.length;
top = -1;
}
public boolean empty() { //checking if stack is empty .
return temp == -1;
}
public boolean full() { //checking if stack is full .
return top + 1 == max_size;
}
public void push(int Ip) {//PUSH operation
if(top <= max_size) {
top++;
}
try { //bit of exception handling while insertion/PUSH operation
if(top >max_size) {
throw new ArrayIndexOutOfBoundsException();
}
else if(empty()|| top<=max_size) {
arr[top] = Ip;
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Stack overflow");
top--;
}
}
public void pop() { // POP
temp = top;
if(top > -1) { // stop top from further decrementing if already -1,
top--; // if not it will interfere with push operation.
}else { temp--;}
try { //bit of exception handling while deletion/POP operation
if(temp < -1) throw new ArrayIndexOutOfBoundsException();
}catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Stack underflow");
}
}
public void Top()
{
System.out.println(arr[top] +" at index "+ top);
}
public static void main(String[] args)
{
Template t = new Template();
t.Stack(4);
t.push(6);
t.Top(); // <---- Return Top variable of Stack
t.pop(); // <--- 6 is removed from the stack so stack will be empty
t.pop(); // <-- so removing element from empty stack will return "UNDERFLOW"
t.push(101);
t.Top(); // <---- Return Top variable of Stack
t.push(10);
t.Top(); // <---- Return Top variable of Stack
t.push(112);
t.Top(); // <---- Return Top variable of Stack
t.push(14); //<----- stack will be full at this point
t.Top();
t.push(146); // so if you push anything it will print "OVERFLOW"
t.push(110);
t.Top(); // <---- Return Top variable of Stack
}
}
Top comments (0)