[자료구조] 스택(Stack)

반응형
    반응형

    스택은 큐(Queue)에 반대되는 정책으로 가장 나중에 쌓은 데이터를 가장 먼저 빼내는 데이터 구조이고

    한쪽에서만 데이터를 넣고 뺄 수 있는 구조입니다.

    • 큐 : FIFO(First-In, Last-Out) or LILO(Last-In, Last-Out)
    • 스택 : LIFO(Last-In, First-Out) or FILO(First-In, Last-Out)

     

    큐(Quene)가 생소하다면 다음 포스팅을 보시기 바랍니다.

     

     

    [자료구조] 큐(Queue)

    큐(Queue) 구조에 대해서 포스팅하겠습니다. 큐의 기본구조는 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 구조를 뜻합니다. 예를 들어, 만약 그림처럼 알파벳을 순서대로 넣는다고 하면 순서대로

    seong6496.tistory.com

     

     

    스택구조는 상자를 쌓는 것과 비슷합니다. 뺄 때도 상자를 맨 밑에서 빼면 쌓은 상자가 무너지니 맨 위부터 빼는 방식으로 구조가 되어있습니다. 아래 그림과 같은 방식으로 움직입니다.

    스택에서는 데이터 넣기를 Push, 데이터 빼기는 Pop 라 합니다. 

     

    구조가 굉장히 단순합니다. 하지만 무한히 쌓을 수는 없어서 최대갯수를 미리 정해야 할 때도 있는데

    그러면 저장 공간을 미리 확보해야 해서 저장 공간의 낭비가 발생할 수 있습니다.

     

     

    파이썬으로 스택(Stack)을 구현해보겠습니다.

    파이썬의 리스트로 구현할 수 있는데요. 

    리스트는 특성상 데이터를 넣는 순서대로 리스트에 저장되고

    pop()은 가장 나중에 넣은 데이터를 빼내는 기능을 수행합니다.

    그래서 append, pop으로 스택을 간단하게 구현을 할 수 있습니다.

    stack_list = []
    #Push
    stack_list.append(1)
    stack_list.append(2)
    stack_list
    >>> [1,2]     #리스트는 데이터가 순서대로 쌓이는 방식으로 들어감
    #Pop
    stack_list.pop()  # pop() 으로 나중에 넣은 데이터를 빼낸다
    >>> 2
    stack_list.pop()
    >>> 1

     

    스택에 대해 간단히 알아봤는데요. 

    심플하면서도 실제로 가장 자주 쓰이는 구조이기 때문에 잘 알아두시면 여러모로 좋을 것 같습니다.

    이상 포스팅을 마치겠습니다~

    'Python > 알고리즘' 카테고리의 다른 글

    [Python] 속도 개선 방법  (6) 2021.09.04
    더블 링크드 리스트(Double linked list)  (0) 2021.01.27
    [자료구조]링크드 리스트(Linked list)  (0) 2021.01.23
    [자료구조] 큐(Queue)  (0) 2021.01.13
    [자료구조] 배열(Array)  (0) 2021.01.09

    댓글

    Designed by JB FACTORY

    ....