스택
음.. 그림판으로 그려봤는데 알아볼 수 있을까?
아무튼!! 위 그림과 같은 형태이다.
어느 상자안에 내가 넣어야 할 데이터들을 하나씩 차곡차곡 정리를 해서 넣어 놓고
꺼낼때는 맨 위에 있는 데이터부터 차곡차곡 하나씩 빼야 하는 흐름이다.
이해를 하기 쉽게 예를 들어보겠다.
내가 상자에 집어 넣으려고 하는 옷이 있다.
1) 두꺼운 옷
2) 긴팔 옷
3) 반팔 옷
4) 나시
두꺼운 옷을 먼저 넣고 -> 긴팔 옷 - > 반팔 옷 -> 나시 이렇게 순서대로 상자안에 넣어놨다면
상자를 봤을때 제일먼저 보여서 꺼낼 수 있는 옷은
나시 -> 반팔 옷 - > 긴팔 옷 - > 두꺼운 옷 이렇게 순서대로 꺼내 놓을 수 있을 것이다.
이것이 스택의 개념이다.
그리고 유식하게 Last in First out (LIFO) 방식이라고 말한다. 나중에 들어온게 먼저 나간다.
--------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- ---------
이러한 스택도 표준 라이브러리에 있어서 사용할 수 있음을 알고 있는가?
이 역시 std 안에 템플릿으로 정의되어 있고 이를 사용할때는 include 시켜줘야 한다.
#include <stack>
stack <int> 같은 자료형도 명시해줘야 한다.
스택에서 사용할 수 있는 함수는 다음과 같다.
1) push ( )
2) pop ( )
3) top ( ) : 제일 상위에 있는 데이터를 반환한다.
4) empty ( ) : 스택이 비어있다면 true 를 출력하고 비어있지 않다면 false 를 출력할 것이다.
5) size ( ) : 스택에 들어가 있는 요소의 개수 사이즈.