[자료구조 파헤치기] Stack구조란
간만에 자료구조나 뒤집어엎어보자는 생각에 하나씩 다뤄볼까 싶어서 한번 꺼내봤습니다.
아마 버전은 시간나는 틈틈이 제가 다룰 수 있는 모든 언어로 다뤄볼 예정입니다.
그럼 우선 첫번째로 Stack구조는 어떤형식의 구조인지를 한번 파악해보시죠.
이거 하나만 알면 됩니다. LIFO!
LIFO
LIFO의 의미는 후입선출(Last In First Out)이라는 의미로 맨 마지막에 들어온(Push) 데이터가 처음으로 빠져나간다고(Pop) 보시면 됩니다.
조금 쉽게 생각을 해보자면 창고에 박힌 상자를 생각해보시면 될 것 같습니다.
창고에 아래서부터 차근차근 상자를 쌓아 올려놨다면, 상자를 꺼내기 위해서는 맨 위에 있는 상자부터 꺼내게 될겁니다.
백문이 불여일견. 말보다는 눈으로 직접 보면서 설명드리겠습니다.
데이터를 넣고(Push) 빼는(Pop) 작업을 잘 확인해보세요!
- 아래 보시는 이미지는 Stack과 데이터 A, B, C를 준비했습니다.
- Stack에 데이터 A를 넣고, (Push)
- 다시한번 더 데이터 B를 Stack에 넣습니다. (Push)
- 그럼 A와 B가 들어간 Stack에서 데이터를 뺀다면 어떤 데이터가(A?, B?) 빠져나올까요? (Pop)
- 정답은 B입니다.
-> Stack은 LIFO. 즉, Last In First Out이기 때문에 맨 마지막에 들어간(Push) 데이터가 나오는(Pop) 형식입니다.
- 계속해서 진행을 해보면 C라는 데이터를 넣고(Push) 뺀다면(Pop) 이 또한 맨 마지막에 들어온(Push) C가 나오는(Pop) 형식입니다. (Last In First Out)
- 마지막으로 데이터를 뺀다면(Pop) B-C-A 순으로 나오게 됩니다.
항상 맨 마지막에 들어온 데이터가 맨 처음으로 나온다는걸(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