스택(Stack)

임동민·2022년 7월 14일
0

알고리즘

목록 보기
1/12
  1. 스택의 개념
    · 메모리의 스택 영역은 함수의 호출과 관계되는 지역변수, 매개변수, 리턴 값등의 임시데이터를 저장합니다.
    · 스택이란 단어는 ‘차곡 차곡 쌓여진 더미’를 의미합니다.
    · LIFO(Last In First Out, 후입선출) 구조라고도 합니다.
  1. 스택의 구조
    · 가장 먼저 저장되는 데이터는 스택의 아래 쪽(높은 주소)부터 쌓이고, 다음 저장되는 데이터가 바로 그 위(낮은 주소)에 쌓입니다.

이제부터 스택 영역에 새로운 데이터가 추가되고 사용되는 모습의 예를 살펴보겠습니다.

다음의 이 빈 통을 스택 영역이라고 생각합시다.

스택에 새로운 데이터를 추가하는 것을 PUSH라고 합니다.
PUSH를 하면 기존 데이터 위에 새 데이터가 순서대로 쌓아집니다.

스택에 있던 데이터를 다시 빼내는 것을 POP라고 합니다.

이처럼 스택은 기본적으로 PUSH와 POP을 통해 데이터의 추가/제거가 가능하며 이 PUSH/POP 되는 데이터의 크기는 프로그래머가 정할 수 있습니다.

이처럼 스택이 밑에서부터 데이터를 추가하는 이유는 커널영역을 침범하지않기 위해서 밑에서부터 데이터를 추가합니다.

  1. 스택의 TOP & BOTTOM
    · TOP/BOTTOM은 스택의 특정위치를 가리킵니다.
    · TOP는 가장 최근에 스택에 저장된 값, BOTTOM은 가장 처음 스택에 저장된 값을 가리킵니다.

현재 이 그림에서는 TOP/BOTTOM의 위치와 다음과 같습니다.

여기서 C라는 데이터가 PUSH가 되면 TOP/BOTTOM의 위치는 어떻게 될까요?

아까 TOP은 B를 가리켰지만 현재는 C를 가리키고 있습니다.
BOTTOM은 그대로입니다.

BOTTOM의 위치는 항상 스택 가장 아랫값을 가리키고 있기 때문에 고정됩니다. 하지만 TOP의 위치는 데이터가 추가되거나, 데이터가 제거될 때 마다 달라집니다.

0개의 댓글

관련 채용 정보