스택(stack)은 제한적으로 접근할 수 있는 나열 구조이다.
접근의 방법은 언제나 목록의 끝에서만 일어난다.
스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)로 되어 있다.
대학 시절 교수님은 LIFO는 택시기사 동전통이라 생각하라고 하셨다...
자료를 밀어 넣는 Push
, 자료를 꺼내는 Pop
동작이 있다.
import java.util.ArrayList;
import java.util.List;
public class MyStack {
private List<String> arrayStack = new ArrayList<>();
public void push(String data){
arrayStack.add(data);
}
public String pop(){
int len = arrayStack.size();
if(len==0){
System.out.println("스택이 비어있습니다.");
return null;
}
return(arrayStack.remove(len-1));
}
public static void main(String[] args) {
MyStack stack = new MyStack();
stack.push("A");
stack.push("B");
stack.push("C");
stack.pop();
stack.pop();
stack.pop();
}
}
이렇게 열심히 스택을 만들었지만,
java.util
에서 스택
기능을 지원하고 있다.
import java.util.Stack;
public class stack {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
}
}