User-defined generic stack using arrays

PHOTO EMBED

Fri Jun 07 2024 15:10:04 GMT+0000 (Coordinated Universal Time)

Saved by @prabhas

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());
    }
}
content_copyCOPY