스택 -먼저 들어온 테이터가 나중에 나가는 구조 (선입후출 LIFO)
박스 쌓기를 생각하면 쉽다.
큐 - 먼저 들어온 데이터가 먼저 나가는 구조 (선입선출 FIFO)
음식점 대기열을 생각하면 쉽다.
파이썬에서는 스택과 큐를 따로 지원하지는 않지만 리스트가 모든 연산을 지원한다.
오히려 다른 언어들보다 간편하게 스택과 큐를 구현할수있다.
덱(deque)
덱(deque)의 개념
양방향 큐가 있는데 그것이 바로 데크(deque)다.
즉, 앞, 뒤 양쪽 방향에서 엘리먼트(element)를 추가하거나 제거할 수 있다.
from collections import deque
deq = deque()
# Add element to the start
deq.appendleft(10)
# Add element to the end
deq.append(0)
# Pop element from the start
deq.popleft()
# Pop element from the end
deq.pop()
deque.append(item): item을 데크의 오른쪽 끝에 삽입한다.
deque.appendleft(item): item을 데크의 왼쪽 끝에 삽입한다.
deque.pop(): 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
deque.popleft(): 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
deque.extend(array): 주어진 배열(array)을 순환하면서 데크의 오른쪽에 추가한다.
deque.extendleft(array): 주어진 배열(array)을 순환하면서 데크의 왼쪽에 추가한다.
deque.remove(item): item을 데크에서 찾아 삭제한다.
deque.rotate(num): 데크를 num만큼 회전한다(양수면 오른쪽, 음수면 왼쪽).