본문 바로가기

Learn/Javascript

Stack과 Queue

 

 

 

 

Stack

쌓다, 쌓이다, 포개지다 와 같은 뜻

데이터(data)를 순서대로 쌓는 자료구조

 

Stack의 특징

 

1. LIFO(Last In First Out)

먼저 들어간 데이터는 제일 나중에 나오는 후입선출의 구조

 

2. 하나의 입출력 방향

Stack 자료구조는 데이터를 넣고 뺄 수 있는 곳이 스택의 가장 최상단, 한 군데

 

3. 데이터는 하나씩 넣고 뺄 수 있다.

스택에 한개 씩 여러 번 데이터를 넣어 스택 내부에 데이터가 여러 개 쌓여 있다고 하더라도, 데이터를 뺄 때는 스택의 가장 최상단에서 한 번에 한 개의 데이터만을 뺄 수 있다.

 

Stack의 실사용 예제

  • 웹 브라우저 뒤로가기 : 가장 나중에 열린 페이지부터 뒤로 가기를 실행합니다.
  • 문서작업에서 Ctrl+Z : 가장 나중에 수정한 내역부터 되돌립니다.
  • 역순 문자열 만들기 : 맨 끝의 문자열부터 차례대로 만들어집니다.
  • 후위 표기법 계산
  • 재귀적 알고리즘

 

 

 

 

Queue

줄을 서서 기다리다, 대기행렬이라는 뜻

놀이기구를 기다리는 줄, 음식점 번호표 같은 것을 예시

 

Queue의 특징

1. FIFO (First In First Out)

먼저 들어간 데이터가 제일 처음에 나오는 선입선출의 구조

 

2. 두 개의 입출력 방향

데이터를 입력할 때는 큐의 맨 끝(tail)으로만 입력이 가능하며 데이터를 출력할 때는 큐의 맨 앞(head)으로만 출력이 가능

 

3. 데이터는 하나씩 넣고 뺄 수 있다.

에 한 개 씩 여러 번 데이터를 넣어 큐 내부에 데이터가 여러 개 쌓여 있다고 하더라도, 데이터를 뺄 때는 큐의 맨 앞에서 한 번에 한 개의 데이터만을 뺄 수 있다.

 

Queue의 실사용 예제

  • 은행창구 번호표 대기 : 빠른 번호표를 가진 사람이 먼저 업무를 봅니다.
  • 프린터 출력 : 가장 먼저 대기열에 오른 프린트가 먼저 출력됩니다.
  • 컴퓨터 운영체제의 테스크 스케쥴링 : 가장 간단한 형태의 선입선 처리 스케쥴링 정책
  • 너비 우선 탐색(BFS) 알고리즘

'Learn > Javascript' 카테고리의 다른 글

GraphQL  (0) 2023.03.28
재귀함수 추가학습  (0) 2023.02.16
JSON  (0) 2023.02.14
재귀함수  (0) 2023.02.13
fetch API  (0) 2023.01.19