Developer Cafe

스택 vs 큐 차이 본문

자료 구조/누구나 자료 구조와 알고리즘

스택 vs 큐 차이

개발자 카페 2021. 3. 6. 15:02
728x90

스택과 큐는 제약을 갖는 배열로 이 제약으로 인해 자료 구조가 매우 간결해진다.

두 자료 구조는 임시 데이터를 처리할때 사용하고 오래 데이터를 사용할 때는 사용하지 않는다.

마치... 음식 주문서같이(식사준비부터 배달까지만 필요하니깐)

 

스택

스택에는 3가지 제약이 존재한다.

● 데이터는 스택의 끝에만 삽입할 수 있다.

● 데이터는 스택의 끝에서만 읽을 수 있다.

● 데이터는 스택의 끝에서만 삭제할 수 있다.

 

스택에 삽입하는걸 푸시, 제거하는걸 이라한다.

 

예를 들어 (var x = {y: [1, 2, 3]})이라는 코드에 괄호 를 빼먹었는지 검사하고싶다면 스택을 사용한다.

 

1. 괄호((),{},[]) 외엔 전부 무시한다.

2. 처음 ( 이 나왔으니 ( 을 푸시한다.

(


3. 다음 { 이 나왔으니 { 을 푸시한다.

( {

4. 다음 [ 을 푸시한다.

( { [

5. 닫는 괄호 ] 이 나왔으니 위 끝 스택과 비교한다. 여는 괄호가 있으니 팝한다.

( {

6. 나머지 부분도 비교해 팝할꺼있으면 팝하고 조건이 맞지않으면 에러를 사용자에게 보여주거나 한다.

 

 

 

큐는 극장에 줄선 사람들이라 생각하면 이해하기 쉽다. 첫번째 사람이 가장 먼저 줄섰고 가장 먼저 극장에 들어가는 모양이다. 그래서 큐를 First In 혹은 First Out 즉, FIFO라고 표현한다.

 

큐에는 3가지 제약이 존재한다.

● 데이터는 큐의 끝에만 삽입할 수 있다.

데이터는 큐의 앞에서만 읽을 수 있다. (스택과 다름)

데이터는 큐의 앞에서만 삭제할 수 있다. (스택과 다름)

 

큐는 요청받은 순서대로 요청을 처리하므로 비동기식 요청을 처리하는 완벽한 도구이다. 이륙을 기다리는 비행기나 의사를 기다리는 환자처럼 정해진 순서대로 이벤트가 발생해야 하는 시나리오 모델링에 흔히 쓰인다.

728x90
Comments