[자료구조 파헤치기] Stack구조란


간만에 자료구조나 뒤집어엎어보자는 생각에 하나씩 다뤄볼까 싶어서 한번 꺼내봤습니다.

아마 버전은 시간나는 틈틈이 제가 다룰 수 있는 모든 언어로 다뤄볼 예정입니다.

 

그럼 우선 첫번째로 Stack구조는 어떤형식의 구조인지를 한번 파악해보시죠.

이거 하나만 알면 됩니다. LIFO!

 

LIFO

LIFO의 의미는 후입선출(Last In First Out)이라는 의미로 맨 마지막에 들어온(Push) 데이터가 처음으로 빠져나간다고(Pop) 보시면 됩니다.

 

조금 쉽게 생각을 해보자면 창고에 박힌 상자를 생각해보시면 될 것 같습니다.

창고에 아래서부터 차근차근 상자를 쌓아 올려놨다면, 상자를 꺼내기 위해서는 맨 위에 있는 상자부터 꺼내게 될겁니다.

 

백문이 불여일견. 말보다는 눈으로 직접 보면서 설명드리겠습니다.

데이터를 넣고(Push) 빼는(Pop) 작업을 잘 확인해보세요!

 

 - 아래 보시는 이미지는 Stack과 데이터 A, B, C를 준비했습니다.

Stack의 구조

 

 - Stack에 데이터 A를 넣고, (Push)

A를 Stack에 Push

 

- 다시한번 더 데이터 B를 Stack에 넣습니다. (Push)

B를 Stack에 Push

 

 - 그럼 A와 B가 들어간 Stack에서 데이터를 뺀다면 어떤 데이터가(A?, B?) 빠져나올까요? (Pop)

Stack에서 Pop을 한다면

 

 - 정답은 B입니다.

  -> Stack은 LIFO. 즉, Last In First Out이기 때문에 맨 마지막에 들어간(Push) 데이터가 나오는(Pop) 형식입니다.

Stack에서 Pop을 한다면 데이터 B가 나옵니다.

 

 - 계속해서 진행을 해보면 C라는 데이터를 넣고(Push) 뺀다면(Pop) 이 또한 맨 마지막에 들어온(Push) C가 나오는(Pop) 형식입니다. (Last In First Out)

Stack에 데이터 C를 Push 후 Pop을 하면 데이터 C가 나옵니다.

 

- 마지막으로 데이터를 뺀다면(Pop) B-C-A 순으로 나오게 됩니다.

B-C-A순으로 데이터가 나옵니다.(Pop)

 

항상 맨 마지막에 들어온 데이터가 맨 처음으로 나온다는걸(LIFO - Last In First Out) 잘 기억해주세요.

이 LIFO만 잘 이해 하셨다면 Stack구조는 다 이해하신겁니다!

 

 # Stack을 소스로 만들어 보기

  ▷ JAVA-List : [자료구조]Java로 Stack 구현해보기 (List 활용) -> 링크로 이동

 

 

** 그림에 사용된 글자체는 네이버 나눔글꼴의 나눔스퀘어 Bold입니다.

 

버전정보 (v1.1)

 - v1.0 2020.06.17 배포

 - v1.1 2020.06.23 내용 추가

 

* 저작권에 위반될 수 있는 컨텐츠(이미지, 동영상 등)나 게시글은 삭제되거나 수정될 수 있습니다.

* 문제의 여지가 될 수 있는 컨텐츠의 경우 댓글 달아 주시면 빠른 시일 내에 조치하도록 하겠습니다.

 

Karzin

abbeea@naver.com

 

 

 

+ Recent posts