자료구조 : 스택(Stack)

ROK·2022년 10월 17일
0

열혈 자료구조

목록 보기
13/30

스택(Stack)

스택이란 프링글스 통으로 이해하면 아주 간편하다

위 사진은 프링글스 통이다 프링글스 통이 과자를 관리하는 방식이 스택이다

스택은 한쪽은 막히고 한쪽은 뚫려있는 프링글스 통에 비유할 수 있고, 다음과 같은 특성을 가진다
먼저 들어간 것이 나중에 나온다

후입선출 혹은 선입후출 방식으로 영어로는 LIFO(Last-In, First-Out) 구조의 자료구조이다.


스택 ADT 정의

스택의 ADT는 나름 정형화 되어있는 편이다.
프링글스 통으로 할 수 있는 것은 다음과 같다.

  • 프링글스 통에 과자를 넣는다 : push
  • 프링글스 통에서 과자를 꺼낸다 : pop
  • 프링글스 통 안을 들여다 본다 : peek

  • void StackInit(Stack * pstack);
    • 스택의 초기화를 진행
    • 스택 생성 후 제일 먼저 호출되어야 하는 함수
  • int SIsEmpty(Stack * pstack);
    • 스택이 비어있는 경우 TRUE(1)를, 그렇지 않으면 FALSE(0)을 반환
  • void Spush(Stack * pstack, Data data);
    • 스택에 데이터를 저장한다. 매개변수 data로 전달된 값을 저장
  • Data SPop(Stack * pstack);
    • 마지막에 저장된 요소를 삭제한다.
    • 삭제된 데이터는 반환이 된다
    • 본 함수의 호출을 위해서는 데이터가 하나 이상 존재함이 보장되어야 한다.
  • Data SPeek(Stack * pstack);
    • 마지막에 저장된 요소를 반환하되 삭제하지 않는다.
    • 본 함수의 호출을 위해서는 데이터가 하나 이상 존재함이 보장되어야 한다.

앞으로 스택을 구현함에 앞서 결정해야할 사항이 있다
스택을 배열 기반으로 구현할지 아니면 연결 리스트 기반으로 구현할지

profile
하루에 집중하자

0개의 댓글