Skip to content

Commit 35bcb63

Browse files
(#8) feat: add Stack implementation with Array
1 parent 7fd3292 commit 35bcb63

File tree

2 files changed

+92
-0
lines changed

2 files changed

+92
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package com.brandoniscoding.algorithms;
2+
3+
public class ArrayStack<T> implements StackImpl<T> {
4+
5+
private T[] arrayStack;
6+
private int top;
7+
8+
@SuppressWarnings("unchecked")
9+
ArrayStack() {
10+
this.arrayStack = (T[]) new Object[0];
11+
this.top = -1;
12+
}
13+
14+
@Override
15+
public void push(T value) {
16+
if (top == arrayStack.length - 1) {
17+
resizeArray();
18+
}
19+
arrayStack[++top] = value;
20+
}
21+
22+
@Override
23+
public T pop() {
24+
if (isEmpty()) {
25+
throw new IllegalStateException("Stack is Empty");
26+
}
27+
T value = arrayStack[top];
28+
arrayStack[top--] = null;
29+
return value;
30+
}
31+
32+
@Override
33+
public T peek() {
34+
if (isEmpty()) {
35+
throw new IllegalStateException("Stack is Empty");
36+
}
37+
return arrayStack[top];
38+
}
39+
40+
@Override
41+
public boolean isEmpty() {
42+
return top == -1;
43+
}
44+
45+
@Override
46+
public int size() {
47+
return top + 1;
48+
}
49+
50+
@Override
51+
public void clear() {
52+
for (int i = 0; i <= top; i++) {
53+
arrayStack[i] = null;
54+
}
55+
top = -1;
56+
}
57+
58+
@Override
59+
public int search(Object element) {
60+
for (int i = top; i >= 0; i--) {
61+
if (arrayStack[i].equals(element)) {
62+
return top - i;
63+
}
64+
}
65+
return -1;
66+
}
67+
68+
@Override
69+
public boolean contains(Object element) {
70+
for (int i = 0; i <= top; i++) {
71+
if (arrayStack[i].equals(element)) {
72+
return true;
73+
}
74+
}
75+
return false;
76+
}
77+
78+
@Override
79+
public void description() {
80+
System.out.println("Array-based stack implementation.");
81+
}
82+
83+
private void resizeArray() {
84+
T[] newArray = (T[]) new Object[arrayStack.length * 2];
85+
System.arraycopy(arrayStack, 0, newArray, 0, arrayStack.length);
86+
arrayStack = newArray;
87+
}
88+
}

Diff for: stack/src/main/java/com/brandoniscoding/algorithms/StackImpl.java

+4
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,8 @@ public interface StackImpl<T> {
2525

2626
// Method to check if a specific element is present in the stack
2727
boolean contains(T element);
28+
29+
// Method to get description
30+
void description();
31+
2832
}

0 commit comments

Comments
 (0)