Stack & Queue

Sasha Park·2021년 3월 4일
0

Data structure

  • data: 문자, 숫자, 소리, 그림 영상 등 저장 가능한 매개체.

  • 자료구조: 여러 데이터들의 묶음을 어떻게 저장할 것이고, 사용할 것인지 정의.
    자료들을 정리하여, 분석 및 활용 용이하게 만들어야 함.


출처: 코드스테이츠

각 자료구조는 특정한 상황에 문제를 해결하는데 특화. 많은 자료 구조를 인지하고 있어야만 어떠한 상황이 닥쳤을때 적합한 자료구조를 사용하여 문제 해결 가능.

Stack

자료를 쌓는 구조. 입출이 하나(top, 최신자료)인 제한적 접근. 브라우저 뒤로 가기, 앞으로 가기 혹은 실행취소 기능 구현 시 이용.
가장 먼저 들어간 자료는 가장 나중에 나올 수 있음.
(First In Last Out, FILO)
가장 나중에 들어간 자료가 가장 먼저 나올 수 있음.
(Last In First Out, LIFO)

stack에서 top을 통해 삽입하는 연산은 push, 삭제하는 연산은 pop 이라고 함.

비어있는 stack에서 원소를 추출하려고 할 때, stack underflow라고 하며, 넘치는 경우를 stack overflow라고 함.

Queue

대기 행렬이란 뜻을 갖고 있으며, Stack과 반대되는 개념임. 먼저 들어간 자료가 먼저 나오거나 (First In First Out, FIFO) 그 반대 (Last In Last Out, LILO) 의 특성을 갖고 있음.

한쪽 끝(front)에서 삽입 작업이 이뤄지고, 다른 끝 쪽(rear)에서 삭제 작업이 이뤄짐.

즉, 자료가 입력된 순서대로 처리해야 할 필요. CPU와 Hard Disk 사이에 존재하는 속도의 차이나 시간의 차이를 극복하기 위한 임시장치로 Queue가 사용됨. Queue는 데이터를 임시로 Ram Disk에 저장하며, 이를 통틀어 Buffer라고 총칭.

youtube 시청 시 buffering은 다운로드 된 자료가 영상을 재생하기에 충분하지 않다면 순서대로 Queue에 모아 두었다가 충분한 양이 되었을 때 비디오를 복원하여 재생함. 이외에도

  • 프린터 인쇄 대기열
  • 프로세스 관리
  • 너비우선탐색 (Breadth-First Search, BFS) 구현
  • Cache 구현
profile
'어?' 에서 '아!'가 되는 순간을 즐기는 개발자입니다.

0개의 댓글