class ArrayStack<T> { private T[] stackArray; private int top; private int maxSize; @SuppressWarnings("unchecked") public ArrayStack(int maxSize) { this.maxSize = maxSize; this.stackArray = (T[]) new Object[maxSize]; this.top = -1; } public void push(T item) { if (isFull()) { System.out.println("Stack overflow"); return; } stackArray[++top] = item; } public T pop() { if (isEmpty()) { System.out.println("Stack underflow"); return null; } return stackArray[top--]; } public T peek() { if (isEmpty()) { System.out.println("Stack is empty"); return null; } return stackArray[top]; } public boolean isEmpty() { return top == -1; } public boolean isFull() { return top == maxSize - 1; } } public class GenericStackDemo { public static void main(String[] args) { // Using ArrayStack ArrayStack<Integer> integerStack = new ArrayStack<>(5); integerStack.push(10); integerStack.push(20); System.out.println("Popped integer: " + integerStack.pop()); System.out.println("Peek integer: " + integerStack.peek()); ArrayStack<Double> doubleStack = new ArrayStack<>(5); doubleStack.push(3.14); doubleStack.push(6.28); System.out.println("Popped double: " + doubleStack.pop()); System.out.println("Peek double: " + doubleStack.peek()); ArrayStack<String> stringStack = new ArrayStack<>(5); stringStack.push("Hello"); stringStack.push("World"); System.out.println("Popped string: " + stringStack.pop()); System.out.println("Peek string: " + stringStack.peek()); } }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter