한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO (Last In First Out) 형식의 자료구조
파이썬에서는 list로 구현이 되어 있음
stack.append(n) : 괄호 안의 요소를 리스트 맨 뒤에 넣음
stack = [1, 2, 3]
stack.append(10)
=> [1, 2, 3, 10]
stack.pop(n) : 리스트의 맨 뒤에 요소를 꺼내고 리스트에서 삭제
stack = [1, 2, 3]
stack.pop()
=> [1, 2]
가장 먼저 입력된 데이터라 가장 먼저 출력되는 FIFO(First In First Out) 형식의 자료구조, 자료를 넣는 곳과 빼는 곳의 위치가 다르다.
요소를 추가할 때는 append(), 삭제할 때는 del키워드나 pop() 함수를 사용한다.
queue = list()
queue.append(0)
queue.append(1)
queue.append(2)
del queue[0] // 요소 0 제거
queue.pop(0) // 요소 1 제거
print(queue)
=> [2]
import queue
queue = queue.Queue()
queue.put(0)
queue.put(1)
queue.put(2)
queue.get()
deque는 스택과 큐의 기능을 모두 가진 객체로 출입구를 양쪽에 가지고 있다.
따라서 스택처럼써도 되고, 큐처럼 써도 된다.
from collections import deque
dq = deque('python')
dq
>>> deque(['p', 'y', 't', 'h', 'o', 'n'])
dq.append('C')
dq
>>> deque(['p', 'y', 't', 'h', 'o', 'n', 'C'])
dp.pop()
>>> 'C'
dp
>>> deque(['p', 'y', 't', 'h', 'o', 'n'])
dp.appendleft('H')
dp
>>> deque(['H', 'p', 'y', 't', 'h', 'o', 'n'])
dp.pop()
>>> 'n'
dp
>>> deque(['H', 'p', 'y', 't', 'h', 'o'])