Stack이란?

<aside> 📖 LIFO(Last in First Out, 후입 선출), 입력과 출력이 한곳으로 제한되는 자료구조

</aside>

Stack 예시

  1. 일반적인 함수의 콜스택, 스택이 넘치게 되면 StackOverFlow가 발생한다.
  2. 문자열 역순 출력, 연산자 후위표기법과 같은 상황에서 사용한다.

코드로 이해하는 스택

전체적인 구조

Class Stack {

		private ArrayList<Integer> list = new ArrayList<>();
		private int STACK_MAX_SIZE;

		public Stack(int STACK_MAX_SIZE) {
				_STACK_MAX_SIZE = STACK_MAX_SIZE;
		}

		void push(int data) {
			...
		}

		void pop() {
			...
		}

		boolean isEmpty() {
			...
		}
}

push : 데이터 삽입

void push(int data) {
		if(isFull()) {
				Error!
		}

		list.add(data);
}

  1. 자료 구조의 가장 마지막 위치에 데이터를 삽입한다.

pop : 데이터 출력

void pop() {
		if(isEmpty()) {
				Error!
		}

		list.delete(list.size()-1);
}
  1. 자료 구조의 가장 마지막에 위치한 데이터를 제거한다.

isEmpty : 비어있는 지 확인