자료구조 : 스택(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개의 댓글

관련 채용 정보