[Algorithm] List - Stack
★한쪽 끝에서만 자료를 추가하고 뺄 수 있는 선형 자료구조. 늦게 들어간 자료가 먼저 나오는 후입선출 방식의 자료구조이다.
public class MyStack<T> {
private int top = -1;
private int capacity = 0;
private T[] stack = null;
@SuppressWarnings("unchecked")
public MyStack(int capacity) {
this.capacity = capacity;
stack = (T[])new Object[capacity];
}
public void push(T v) {
if (top == capacity - 1) {
throw new RuntimeException("Stack Overflow");
}
stack[++top] = v;
}
public T pop() {
if (top == -1) {
throw new RuntimeException("Stack is Empty");
}
T result = stack[top];
stack[top--] = null;
return result;
}
public T peek() {
if (top == -1) {
throw new RuntimeException("Stack is Empty");
}
return stack[top];
}
public void print() {
System.out.print("top : " + top + " : ");
for (T t: stack) {
System.out.print(t + " ");
}
System.out.println();
}
}