Stack
사전적 의미로는 '쌓다', '더미'라는 뜻으로 스택을 흔히 후입선출(선출후입), LIFO 라고 부르는데 쉽게 설명하자면 아래가 막힌 어떤 물체를 생각하면 된다.
따라서 Stack은 데이터를 쌓는 형식으로 저장하는데 따라서 조회, 추가, 삭제 모두 가장 위에 있는 즉 가장 최근의 값에서 이루어 진다. 스택 구조에서 가장 상단에 있는 데이터를 Top이라고 한다
- 가장 최근에 입력된 데이터를 top 이라고 하며 스택은 top에서만 삽입, 삭제, 읽기 동작이 발생할 수 있다.
- top은 데이터의 수에 따라 유동적으로 변하며 데이터가 하나 삽입될 경우 하나 증가하고 데이터가 하나 삭제될 경우 하나 감소하도록 작성한다.
메소드
- push: 데이터 추가
- pop: Top 데이터 삭제
- peek: Top 데이터 조회
- search: 인자값을 받은 데이터의 '위치' 반환
- empty: 값이 비었는지 확인. 비었으면 true, 아니면 false
이런식으로 저장이 된다. top은 무조건 제일 '상위'에 위치해 있는 데이터라고 생각하면 쉽다.
왼쪽에서 pop 메소드를 실행할 경우 제일 상위에 있는 데이터 5가 사라진다. 이제 4가 top 이다.
import java.util.Stack;
public class StackPrac {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<Integer>();
for (int i = 0; i < 10; i++) {
stack.push(i + 1);
System.out.println(stack.peek()); // 1부터 10까지 넣기
}
stack.pop(); // 제일 최근에 (마지막에) 넣은 데이터 삭제. 10 삭제
System.out.println(stack.peek()); // 제일 최근에 (마지막에) 추가된 데이터 조회. 10이 삭제됐으므로 9.
System.out.println(stack.search(3)); // 7 (거꾸로 세야된다. 아래가 막힌 어떤 물체로 생각하듯이 마지막에 추가된 물체를 넣은 것 처럼 마지막에 넣은것들 부터 꺼내서 수를 센다고 생각하면 쉽다.
System.out.println(stack.empty()); // false
}
}
참고
https://hyeonstorage.tistory.com/262
velog.io/@lshjh4848/Java-%EC%8A%A4%ED%83%9DStack-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%A0%95%EB%A6%AC
'Backend > Data Structure' 카테고리의 다른 글
3. Collection Framework (0) | 2020.11.20 |
---|---|
2. Array 클래스 (0) | 2020.11.19 |