[SEB] Today I Learn

Chipmunk_jeong·2021년 4월 18일
0

TIL

목록 보기
44/62
post-thumbnail

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에 함수들이 쌓인다.

  1. introduce가 호출되며 스택에 쌓인다.
  2. sayHello가 호출되며 그 위에 쌓인다.
  3. sayHello의 코드가 다 실행되고 call stack에서 빠진다.
  4. sayName이 호출되며 call stack에 쌓인다.
  5. sayName의 코드가 다 실행되고 call stack에서 빠진다.
  6. introduce의 코드가 다 실행되고 call stack에서 빠진다.

위 예시에서 볼 수 있듯이먼저 들어간 데이터는 가장 나중에 나올 수 있다 이것을 LIFO(Last In First Out)이라고도 한다.



Queue


Queue는 줄을 서서 기다리다, 대기 행렬이라는 뜻을 가지고 있다.
Stack과는 조금 반대되는 개념으로 먼저 들어간 data가 먼저 나오는 FIFO(First In First Out)의 특성을 가지고 있다.

실제 고속도로 톨게이트를 본다면, 먼저 도착한 차량의 계산이 끝나고 나가야지만 다음 차량이 계산을 하고 나갈 수 있다.
이것을 Queue와 같은 원리라고 생각할 수 있다.

아래 그림에서 3번의 차가 빠져나가려면 1번과 2번의 차가 나가야지만 나갈 수 있다.

profile
Web Developer

0개의 댓글