자료구조 - Stack(스택)의 개념

컴퓨터/알고리즘&자료구조

728x90
반응형

Stack(스택) 

Stack은 사전적 의미로 쌓다, 포개다, 채우다를 의미합니다. 자료구조 개념의 하나인 Stack은 바로 쌓아 올리는 개념입니다 

한번 쌓아 올리다를 상상해 볼까요? 

  • 이사를 하기 위해 박스 안에 책을 아래서부터 하나씩 쌓아 올린다. 
  • 이사된 집에 책을 꺼내기위해 박스 안에 책을 위에서부터 하나씩 꺼낸다.

이게 바로 스택 자료구조의 기본적인 개념입니다. 

아래서 부터 차곡차곡 올라가고, 위에서 부터 하나씩 제거가 되는 것입니다.

 

Stack의 특징 - LIFO 

보통 Stack의 특징이라고 하면 후입 선출의 또는 LIFO의 개념이라고 말합니다. 

후입 선출, List In First Out(LIFO)은 결국 어떠한 일이 계속 쌓이면 마지막에 있는 일부터 처리를 하는 개념입니다.

Stack의 이 과정을 시각화하면 아래와 같습니다.

스택 데이터 구조의 시각화

Push - 데이터를 쌓아 올리는 과정을 Push라고 하며 삽 인한 다라는 표현을 합니다 항상 가장 위에 자리하게 됩니다.

Pop - 데이터를 제거하는 과정을 Pop이라 하며 항상 가장 위에 있는 데이터를 먼저 제거합니다.

 

Stack의 용도 및 예시. 

Stack 개념을 사용하는 자료구조의 경우 직관적입니다. 때문에 여러 가지 용도로 이 Stack의 개념이 적용되어 사용하고 있습니다.

 

예를 들어 몇 가지 예시를 들어보도록 하겠습니다. 

  • 게임에서 중첩의 효과 
    • 연속으로 공격을 성공하면 매 회 공격력 1* 회수만큼 증가 
    • 실패하면 회수 차감 
  • 인터넷 웹페이지 검색
    • 검색을 하기 위에 같은 창에 계속해서 링크들을 실행 
    • 뒤로 가기 버튼을 누르면 바로 전 페이지로 이동
  • 프로그램 구조 - 스택 프레임
    • 메모리 구조 중 스택 영역의 데이터들의 생성과 소멸 등

이런 식으로 Stack은 정말 많은 곳에서 개념을 적용하여 사용하고 있습니다. 

 

 

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :