자료구조 - Stack, Queue

코드위의승부사·2020년 1월 17일
0

Stack이란 ?

데이터가 입력되면 순차적으로 쌓이고 나중에 들어온것 부터 출력되는 LIFO(Last In First Out) 후입선출의 구조다.
즉, 가장 최근에 스택에 추가된 항목이 가장 먼저 제거된다.
이렇게 되면 데이터가 계속 입력될경우 가장 오래된 데이터는 출력되기 힘든 구조라 생각된다.

실생활 안의 스택 - 위아래로 쌓인 호떡

(호떡들이 바로 팔린다면 아무 문제가 없지만 호떡은 쌓이고 가장 최근 것만 팔린다면?
또 위로 계속 쌓인다면 밑으로 떨어지는 기름들은..😪)

Stack의 메소드

pop() : 가장 위에 있는 항목 제거
push(item) : item 하나를 스택의 가장 윗 부분에 추가

Stack의 사용예시

CallStack - Js 런타임 환경에서 함수 스택들이 쌓이는 자료구조

Queue란 ?

위의 스택의 단점을 개선한 방법으로 먼저 들어온 데이터 먼저 출력되는 FIFO(First In First Out) 선입선출의 구조다.

실생활 안의 큐- 순차적으로 정렬된 호떡

호떡을 순차적으로 정렬해서 먼저 만든 호떡을 먼저 팔 수 있다.

Queue의 메소드

enqueue() : 데이터를 입력
dequeue() : 데이터를 출력

Queue의 사용예시

TaskQueue - Task들을 임시 저장하는 대기 큐

setTimeout(function(){
  console.log('first');
}, 0);
console.log('second');

비동기 함수들(이벤트에 의해 실행되는 함수와 Web API영역에 따로 정의 되어 있는 함수들) Call Stack에 쌓이지 않고 Task Queue에 enqueue된다.

profile
함께 성장하는 개발자가 되고 싶습니다.

0개의 댓글