my study.

Study

[자료구조] 스택이란? (Stack)

fftl 2022. 3. 20. 00:51

자료구조에 대해서 어느 정도 알고있다고 생각하지만, 하나씩 정리하며 기억을 단단히 해보고자 합니다. '자료구조와 함께 배우는 알고리즘 입문'을 참고하여 정리하고 있습니다.

 

스택이란?

스택이란 데이터를 일시적으로 저장하기 위한 자료구조로, 데이터의 입력과 출력의 순서는 후입선출(LIFO, Last In First Out)입니다. 후입선출이란 'Last In' 마지막에 들어간 데이터가 'First Out' 처음에 나오는 형식을 말합니다. 스택에 데이터를 넣는 작업을 푸시(push)라 하고, 스택에서 데이터를 꺼내는 작업을 팝(pop)이라고 합니다. 그리고 푸시와 팝이 이루어지는 위치를 꼭대기(top)라 하고, 스택의 가장 아랫부분을 바닥(bottom)이라고 합니다.

 

Java 프로그램에서 메서드를 호출하고 실행할 때 프로그램 내부에서 스택을 사용합니다.

 

static String a() {
	System.out.println(b());
	return "a";
}

static String b() {
	return "b";
}

static String c() {
	System.out.println(a());
	return "c";
}

public static void main (String[] args) throws java.lang.Exception{
	System.out.println(c());
}

위의 같은 코드를 실행 시킨다면 아래와 같은 순서로 문자가 출력됩니다.

b
a
c

흐름을 이해해 보자면 main 메서드가 가장 먼저 실행되며 System.out.println(c()); 로 인하여 c() 메서드가 실행됩니다. 그리고는 c() 메서드에서 System.out.println(a()); 로 인해서 a() 메서드가 실행되고, a() 메서드 에서는 System.out.println(b()); 로 인해서 b() 메서드가 차례로 실행됩니다. 이 과정이 stack이 점점 쌓여가는 과정이고 return 밖에 가지고 있지 않은 b() 메서드 부터 return 을 시작해 나가는 것으로 이해할 수 있습니다. 

stack의 흐름