ABOUT ME

Today
Yesterday
Total
  • Stack
    DS 2020. 7. 19. 23:37

    스택이란?

    스택은 자료 구조형의 일종으로, LIFO 형식을 따르는 구조이다.

    LIFO?

    큐와는 반대로, 스택을 설명할 때 가장 많이 쓰는 말 중 하나는 'LIFO'다. LIFO란, Last In First Out이란 뜻이다.

    영어 표기법대로, '나중에 들어간 놈이 먼저 나온다'는 뜻이다. 즉 가장 늦게 입력된 원소가 가장 먼저 출력된다는 것을 의미한다.

     

    스택의 필수요소들

    스택도 큐와 같이 자료 구조이다. 따라서 자료들을 넣고 뺄 수 있어야 하며, 스택의 상태도 조사할 수 있어야 한다.

    • Push e: 스택의 가장 앞에 원소 e를 삽입한다.
    • Pop: 스택의 가장 앞에 있는 원소를 빼서 return한다. 스택이 비어 있으면 에러를 return한다.
    • Top: 스택의 가장 앞에 있는 원소의 값을 return한다. 빼지는 않는다.
    • Empty: 스택이 비었으면 True, 아니면 False를 return한다.
    • Length: 스택의 길이를 return한다.

    실제 큐의 예시

    빈 스택 S를 하나 만들자...

    명령어 return 스택의 상태
    Push a   a
    Push b   a, b
    Pop b a
    Push c   a, c
    Enqueue d   a, c, d
    Length 3 a, c, d
    Empty False a, c, d
    Pop d a, c
    Top c a, c
    Pop c a
    Pop a  
    Empty True  
    Pop Error  

    스택의 구현

    스택 역시 배열로 구현할 수 있다.

    class Stack:
      def __init__(self):
        self.s=[]
      def length(self):
        return len(self.s)
      def empty(self):
        return not self.length()
      def Push(self, e):
        self.s=[e]+self.s
      def Pop(self):
        if self.empty():
          raise Empty()
        else:
          x=self.s[0]
          self.s=self.s[1:]
          return x
      def Top(self):
        if self.empty():
          raise Empty()
        else:
          return self.s[0]

     

     

    'DS' 카테고리의 다른 글

    Double-Ended Queue  (0) 2020.07.20
    Queue  (0) 2020.07.19

    댓글

Designed by Tistory.