파이썬의 스택(stack)과 큐(queue)

1. 스택(stack)

 

나중에 넣은 데이터를 먼저 반환하도록 설계된 자료구조

 

Last In First Out(LIFO)

 

Data 입력을 push, 출력을 pop

 

그림1. stack 구조 설명

위 그림1은 스택을 가상적으로 표현한 그림

 

4를 먼저 넣고 다음에 10을 넣었다

 

마지막에 들어간 10을 처음으로 빼내는 모습

 

------------------------------------------------------------------------------------------------------------------------

이름 그 자체를 생각해보면 외울것이 아니다

 

데이터를 넣을수록 계속 쌓이는(stack) 자료구조

 

여있는 구조(stack)에서 무언가 빼낼려면 안에있는 것보다 밖에있는 것을 먼저 뺄수있다는 것을 생각한다면?

---------------------------------------------------------------------------------------------------------------------------

 

리스트를 사용하여 쉽게 구현할 수 있다

 

a = [1,2,3,4,5]
a.append(10)
a.append(20)

a.pop()
20

c = a.pop()
c
10

a
[1,2,3,4,5]

 

 

append를 이용하여 넣고

 

pop을 이용하여 빼낸다

 

마지막으로 들어간 20이 먼저 빠지는 걸 확인

 

 

2. 큐(queue)

 

먼저 넣은 데이터는 먼저 반환되도록 설계된 자료구조

 

First In First Out (FIFO)

 

그림2. queue를 가상적으로 표현한 그림

 

9가 들어가고 8이 들어가고 5가 들어가고 3이 들어가고

 

먼저 들어간 9가 가장 먼저 빠져나가는 모습

 

------------------------------------------------------------------------------------------------------------------

stack과는 반대로 안에 넣은 데이터를 먼저 뺄 수 있음

 

stack의 의미를 생각해서 stack이라는 구조가 쌓여있는 상태에서는 물리적으로 밖에 있는걸 먼저 뺄 수 있다는 걸 생각하고

 

queue는 그 반대로 안에 있는걸 뺄 수 있겠다라고 생각하면 외우기 편할듯

 

---------------------------------------------------------------------------------------------------------------------

 

리스트를 사용하여 큐를 구현할 수 있다

 

a = [1,2,3,4,5]
a.append(10)
a.append(20)

a.pop(0)
1

c = a.pop(0)
c
2

a
[3,4,5,10,20]

 

pop(0)을 이용하면 0번째 원소, 제일 먼저 들어간 원소를 빼낼 수 있다

TAGS.

Comments