CS/자료구조

스택과 큐의 차이점

Frankie 2021. 1. 24. 19:12

스택 - 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조로 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조이다.

 

스택은 LIFO(Last In First Out - 마지막에 넣은 데이터를 가장 먼저 추출하는 데이터 관리 정책) 방식을 따른다.

 

push(): 데이터를 스택에 넣기

pop(): 데이터를 스택에서 꺼내기

 

장점

- 구조가 단순해서 구현이 쉽다.

- 데이터 저장/읽기 속도가 빠르다.

 

단점

- 데이터 최대 개수를 미리 정해놔야 한다.

-> 저장 공간의 낭비가 발생할 수 있다.

-> 미리 최대 개수만큼 저장 공간을 확보해야 한다.

 

코드로 구현(파이썬)

stack_list = []

def push(data):
	stack_list.append(data)
    
def pop():
	data = stack_list[-1]
    del stack_list[-1]
    return data

 

큐 - 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조, FIFO(Fist In, First Out)구조, 먼저 들어온 게 먼저 나간다.

 

Enqueue: 큐에 데이터를 넣는 기능

Dequeue: 큐에서 데이터를 꺼내는 기능

 

파이썬 Queue 라이브러리

- Queue(): 가장 일반적인 큐 자료 구조

- LifoQueue(): 나중에 입력된 데이터가 먼저 출력되는 구조(스택 구조)

- PriorityQueue(): 데이터마다 우선순위를 넣어서 우선순위가 높은 순으로 데이터 출력

 

큐는 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용된다. 

 

코드로 구현(파이썬)

queue_list = []

def enqueue(data):
	queue_list.append(data)
    
def dequeue(data):
	data = queue_list[0]
    del queue_list[0]
    return data