발걸음/일지
[자료구조]Stack
리꾸므
2022. 11. 20. 12:12
Stack
데이터를 순서대로 쌓는 자료구조이다. 가장 먼저 들어간 자료가 가장 나중에 나올 수 있고, 가장 나중에 들어간 자료가 가장 먼저 나올 수 있다.
- 입력과 출력이 하나의 방향으로 이루어지는 제한적 접근이다.
- 이런 자료구조 정책을 LIFO(Last In First Out) 혹은 FILO(First In Last Out)이라고도 부른다.
- 데이터를 넣는 것을 'PUSH', 데이터를 꺼내는 것을 'POP'이라고 한다.
Stack 특징
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
---------------------------
1 <- 2 <- 3 <- 4
---------------------------
stack.pop();
stack.pop();
stack.pop();
stack.pop();
---------------------------
4, 3, 2, 1
---------------------------
1. LIFO
먼저 들어간 데이터는 제일 나중에 나오는 후입선출의 구조이다.
2. 데이터는 하나씩 넣고 뺄 수 있다.
아무리 많은 데이터가 있어도 하나씩 넣고 뺄 수 있다. 한꺼번에 여러개를 넣거나 뺄 수 없다.
3. 하나의 입출력 방향을 가지고 있다.
만약 입출력 방향이 여러개라면 Stack자료구조로 볼 수 없다.
Stack 실사용 예제
- 브라우저에서 뒤로가기 앞으로가기가, Stack을 통해 다음과 같은 순서로 작동한다.
- 새로운 페이지 접속할 때, 현재 페이지를 Prev Stack에 보관한다.
- 뒤로 가기버튼을 눌러 이전 페이지로 돌아갈 때, 현재 페이지를 Next Stack에 보관, PRev Stack에 가장 나중에 보관된 페이지를 현재페이지로 가져온다.
- 앞으로 가기 버튼을 눌러 앞서 방문한 페이지로 이동을 원할때에는, Next Stack의 가장 마지막으로 보관된 페이지를 가져온다.
- 마지막으로 현재 페이지를 Prev Stack에 보관한다.