Stack
stack
은 쌓다, 쌓이다와 같은 뜻을 가지고 있다.
짐을 위로 차곡차곡 쌓듯한 형태와 비슷한 이 자료구조는
말 그대로 data를 쌓는 자료구조
다.
실제로 자바스크립트에서 함수를 호출하는 방식은 stack
방식을 이용한다.
function sayhello() {
console.log('hello');
}
function sayName() {
console.log('quakka');
}
function introduce() {
console.log(`${sayHello()}, my name is ${sayName()}`);
}
위의 코드를 본다면 call stack
에 함수들이 쌓인다.
call stack
에서 빠진다.call stack
에 쌓인다.call stack
에서 빠진다.call stack
에서 빠진다.위 예시에서 볼 수 있듯이먼저 들어간 데이터는 가장 나중에 나올 수 있다
이것을 LIFO(Last In First Out)
이라고도 한다.
Queue
는 줄을 서서 기다리다, 대기 행렬이라는 뜻을 가지고 있다.
Stack
과는 조금 반대되는 개념으로 먼저 들어간 data
가 먼저 나오는 FIFO(First In First Out)
의 특성을 가지고 있다.
실제 고속도로 톨게이트를 본다면, 먼저 도착한 차량의 계산이 끝나고 나가야지만 다음 차량이 계산을 하고 나갈 수 있다.
이것을 Queue
와 같은 원리라고 생각할 수 있다.
아래 그림에서 3번의 차가 빠져나가려면 1번과 2번의 차가 나가야지만 나갈 수 있다.