[자료구조] 스택이란?

minjgziii·2022년 8월 1일
0

💡 스택(stack)이란?

🔻 스택 : "쌓다"라는 의미로, 데이터를 차곡차곡 쌓아 올린 형태의 자료구조

  • 데이터가 순서대로 쌓이며 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 구조
  • 스택은 정해진 방향으로만 쌓을 수 있고, top으로 정한 곳을 통해서만 접근 가능

ex) 식당에 쌓여 있는 접시들 -> 접시가 필요하면 제일 위에 있는 접시부터 사용, 가장 아래 있는 접시는 마지막에 사용


🔻 스택은 LIFO / FILO 순서를 따름

  • LIFO : 마지막으로 들어온 값이 처음으로 나가는 것

  • FILO : 처음 들어온 값이 마지막에 나가는 것

    -> 후입 선출

  • Overflow 상태 : 스택이 완전히 꽉 찾을 때

  • Underflow 상태 : 스택이 완전히 비어 있을 때

  • push : 데이터를 스택에 넣는 작업(삽입 연산)
  • pop : 데이터를 스택에서 제거하는 작업(삭제 연산)

💡 연산

🔻 push()

1. 스택이 가득 차 있는지 확인
2. 스택이 가득 차 있으면, 오류가 발생하고 종료됨
3. 스택이 가득 차 있지 않으면, Top 증가시킴
4. Top이 가리키는 스택 위치에 데이터 추가

🔻 pop()

1. 스택이 비어 있는지 확인
2. 스택이 비어 있으면, 오류가 발생하고 종료됨
3. 스택이 비어 있지 않으면, Top이 가리키는 데이터를 제거
4. Top 값을 감소시킴
5. 성공 반환

🔻 peek()

  • 현재 top이 가리키고 있는 데이터를 확인하는 연산
  • pop()과의 차이점 : pop 연산은 stack에서 꺼내서 읽는다면, peek 연산은 데이터를 꺼내지 않고 값만 읽음

🔻 isEmpty()

  • 현재 stack이 비어있는지 확인하는 연산
  • stack이 비어있다면 true, 비어있지 않다면 false 반환
profile
티스토리로 이사갑니당

0개의 댓글