본문 바로가기
알고리즘/자료구조

[자료구조] Stack

by Bhinney 2022. 7. 27.

1. 스택(Stack) 이란

  • Stack : 쌓다, 쌓이다, 포개지다
  • 데이터를 순서대로 쌓는 자료구조
  • 입력과 출력이 하나의 방향으로 이루어지는 제한적 접근
  • LIFO(Last In First Out) 혹은 FILO(First In Last Out)
  • Stack에 데이터를 넣는 것을 ‘PUSH’
  • Stack에서 데이터를 꺼내는 것을 ‘POP’

2. Stack의 특징

  • LIFO(Last in First Oust)
    • 먼저 들어간 데이터가 가장 나중에 나오는 후입선출 구조
    • 예 : 좁은 일방통행길에 들어간 자동차가 막다른 길을 만나면, 맨 마지막에 들어온 차부터 나가야 한다.
  • 데이터는 하나씩 넣고 뺄 수 있음
    • Stack의 데이터는 아무리 많아도 하나씩 데이터를 넣고 뺌.
    • 한꺼번에 여러 개를 넣거나 뺄 수 없음
  • 하나의 입출력 방향을 가지고 있음
    • 만일 입출력 방향이 여러 개라면, Stack이라고 볼 수 없음.

3. Stack의 실사용 예제

  • 예 : 웹 브라우저의 뒤로가기, 앞으로 가기

          1️⃣ 새로운 페이지로 접속할 때, 현재 페이지를 Prev Stack에 보관

          2️⃣ 뒤로 가기 버튼을 눌러 이전 페이지로 돌아갈 때에는 현재 페이지를 Next Stack에 보관

               가장 나중에 보관된 페이지를 현재 페이지로 가져옴

          3️⃣ 앞으로 가기 버튼을 눌러 앞서 방문한 페이지로 이동을 원할 때에는, 

              Next Stack의 가장 마지막으로 보관된 페이지를 현제 페이지로 가져옴

          4️⃣ 마지막으로 현재 페이지를 Pre Stack에 보관


4.  Stack의  메서드

push() : 스택에 추가
pop() : 가장 마지막에 추가한 최 상위 요소를 추출 (제거 O)
peek() : 가장 마지막에 추가한 최 상위 데이터 추출 (제거 X)
isEmpty() : 스택이 비어있는지 확인
clear() : 스택의 데이터를 다 지움

 

'알고리즘 > 자료구조' 카테고리의 다른 글

[자료구조] Graph  (0) 2022.07.27
[자료구조] Tree  (0) 2022.07.27
[자료구조] Queue  (0) 2022.07.27
[자료구조] 재귀 함수(Recursive Function)  (0) 2022.07.27

댓글