03_Part_Stack / Queue

Hanbin Lee·2021년 4월 15일
0

codestates

목록 보기
3/7
post-thumbnail

자료구조에는 여러 구조로 구분되어 있다. 그중 흔히 쓰는 선형구조의 stack, queue 와 비선형구조의 tree, graph가 있는데, 이번 시간에는 선형구조의 stack과 queue에 대해 정리해보려 한다.

Stack

stack은 사전적 의미인 '쌓다'와 동일 한, 자료를 쌓는 자료구조라는 의미이다.
데이터를 차례대로 쌓기 때문에 먼저 저장된 데이터는 가장 나중에 불러오고(FILO, First In Last Out), 가장 나중에 저장된 데이터는 제일 먼저 불러오는(LIFO, Last In First Out)특성을 가진다.

예를 들면...

인터넷 브라우저를 사용할 때,
뒤로 가기 기능이나 앞으로 가기 기능을 구현할 때 stack 자료구조가 사용된다.

let prev = []; //이전 페이지의 데이터변수
let next = []; //다음 페이지의 데이터변수

현재 페이지에서 다른 페이지를 열었을 때,
현재 페이지는 prev변수에 stack 자료구조 형식으로 저장 된다.

prev.push('현재 페이지');  //prev = ['현재 페이지']

뒤로가기 버튼을 눌렀을 때,
이번에는, 현재 페이지는 next변수에 stack 자료구조 형식으로 저장 되고,
prev변수에서 가장 나중에 들어온 데이터를 호출한 뒤 삭제한다.

next.push('현재 페이지');  //prev = ['현재 페이지']
'현재 페이지' = prev.pop();

Queue

queue는 줄을서다, 대기행렬 이라는 사전적 의미와 같이 자료를 대기열에 세워 순차적으로 진행시키는 자료구조이다.
stack과 다르게 먼저 들어간 데이터가 먼저 나오는, FIFO(First In First Out)특성을 가진다.

예를들면...
문서를 프린터하는 과정을 예로 볼 수 있다.

문서를 프린트할 때, 먼저 프린트 할 문서가 프린트 되기 전에는 다음으로 프린트 될 문서는 대기열에서 기다리게 된다.

컴퓨터 장치들 사이에서의 처리되는 속도는 각각 다르기 때문에 다음 장치가 처리하기 전까지는 이전 장치는 대기 상태가 되어야한다.
이를 처리하기 위해서는 queue가 사용되는데, 이를 버퍼(buffer)라고 한다. 흔히 버퍼링(buffering)이라는 것은 자료가 출력되기 전 자료가 다운로드되기 까지 기다리는 것이라고 이해하면 된다.

profile
안녕하세요 백엔드 개발자 이한빈 입니다 :)

0개의 댓글