[자료구조] 스택 & 큐

Ocean·2023년 3월 11일
0

알고리즘 스터디 v2

목록 보기
7/17
post-thumbnail

스택(Stack)이란?

스택의 개념

한 쪽 끝에서만 자료를 넣고 뺄 수 있는 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]

큐(Queue)란?

큐의 개념

가장 먼저 입력된 데이터라 가장 먼저 출력되는 FIFO(First In First Out) 형식의 자료구조, 자료를 넣는 곳과 빼는 곳의 위치가 다르다.

사용법 (list로 구현)

요소를 추가할 때는 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]

사용법 (queue 라이브러리)

import queue

queue = queue.Queue()

queue.put(0)
queue.put(1)
queue.put(2)

queue.get()

deque로 스택과 큐 이용하기

deque의 개념

deque는 스택과 큐의 기능을 모두 가진 객체로 출입구를 양쪽에 가지고 있다.
따라서 스택처럼써도 되고, 큐처럼 써도 된다.

deque 생성

from collections import deque
dq = deque('python')
dq

>>> deque(['p', 'y', 't', 'h', 'o', 'n'])

스택으로 사용하기

  • append()
  • pop()
dq.append('C')
dq
>>> deque(['p', 'y', 't', 'h', 'o', 'n', 'C'])

dp.pop()
>>> 'C'

dp
>>> deque(['p', 'y', 't', 'h', 'o', 'n'])

큐로 사용하기

  • appendleft()
  • pop()
  • append()
  • popleft()
dp.appendleft('H')
dp
>>> deque(['H', 'p', 'y', 't', 'h', 'o', 'n'])

dp.pop()
>>> 'n'

dp
>>> deque(['H', 'p', 'y', 't', 'h', 'o'])
profile
chick! chick!

0개의 댓글