[자료구조] 스택(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