From ddd7449170d4d363a068d96e0406c8542e7f979b Mon Sep 17 00:00:00 2001 From: Galagamage Umanda Thathsarani <57774048+Umanda-t@users.noreply.github.com> Date: Fri, 27 Oct 2023 00:13:47 +0530 Subject: [PATCH] Create Stack.java --- Stack.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Stack.java diff --git a/Stack.java b/Stack.java new file mode 100644 index 0000000..a2b9460 --- /dev/null +++ b/Stack.java @@ -0,0 +1,49 @@ +public class Stack { + private static final int DEFAULT_CAPACITY = 10; + private Object[] elements; + private int size; + + public Stack() { + elements = new Object[DEFAULT_CAPACITY]; + size = 0; + } + + public void push(T item) { + ensureCapacity(); + elements[size++] = item; + } + + @SuppressWarnings("unchecked") + public T pop() { + if (isEmpty()) { + throw new IllegalStateException("Stack is empty"); + } + T item = (T) elements[--size]; + elements[size] = null; // Help with garbage collection + return item; + } + + public T peek() { + if (isEmpty()) { + throw new IllegalStateException("Stack is empty"); + } + @SuppressWarnings("unchecked") + T item = (T) elements[size - 1]; + return item; + } + + public boolean isEmpty() { + return size == 0; + } + + public int size() { + return size; + } + + private void ensureCapacity() { + if (size == elements.length) { + int newCapacity = elements.length * 2; + elements = Arrays.copyOf(elements, newCapacity); + } + } +}