Computer-Sience/Data-Structure

[Data-Structure] Stack, Queue, Deque

dev_ss 2022. 12. 27. 22:26

Stack과 Queue는 선형 자료구조의 특징을 공통적으로 가지고 있다.

 

Stack  :

 Last In First Out (LIFO) - 후입 선출 (후에 들어간 원소가 먼저 배출)

 First In Last Out (FILO) - 선입 후출 (먼저 들어간 원소가 나중에 배출)

이것은 Stack의 가장 큰 특징이며 차곡차곡 쌓이는 구조로 이해하면 된다.

그렇기에 늦게 들어간 녀석들은 점차 쌓이게 되고 호출 시 가장 위에 있는 원소가 나오는 구조이다.

 

ex ) 바구니에 물건을 담았다가 위에서부터 꺼냄


Queue :

First In First Out (FIFO). - 선입 선출 (먼저 들어간 원소가 먼저 배출)

Stack과 다르게 들어간 원소가 쌓이는 것은 마찬가지이나 들어간 순으로 배출된다는 것이 특징이다.

 

ex ) 놀이공원에서 대기줄의 앞부터 순서대로 입장하는 것


Deque :

Stack과 Queue의 특징을 모두 합한 구조이다.

타 구조처럼 데이터가 순차적으로 쌓이는 것은 동일하다.

하지만 배출되는 과정에서 차이가 있다.

 

원소는 가장 먼저 들어간 원소나 가장 마지막에 들어간 원소들을 양방향으로 배출가능한 것이 특징이다.

 

ex ) 빨대에 방향에 상관없이 물체가 빠져나갈 수 있는 것

  • Python에는 collections라는 라이브러리에서 deque를 이용할 수 있다.

Example : 

from collections import deque

deque_list = [1,2,3,4,5]

deque = deque(deque_list)

# 가장 왼쪽 원소를 배출하여 출력 
print(deque.popleft())

# 가장 오른쪽 원소를 배출하여 출력
print(deque.pop())

print(deque.popleft())

print(deque.pop())

print(deque.popleft())

 

Result :

1
5
2
4
3
반응형