본문 바로가기
부트캠프교육중/알고리즘

Queue

by 뭉지야 2023. 3. 14.
728x90

Queue
-줄을 서서 기다리다, 대기행렬
-톨게이트에 진입한 순서대로 통행료를 내고 톨게이트를 통과한다.............
-톨게이트가 queue, 자동차 data
-가장 먼저 진입한 자동차가 가장 먼저 톨게이트를 통과한다. 가장 나중에 진입한 자동차는 먼저 도착한 자동차가 빠져나가기전까지는 톨게이트를 빠져나갈수없다.

# 구조
-stack과 반대되는 개념
-먼저 들어간 데이터가 먼저 나오는 FIFO(first in first out)혹은 LILO(last in last out)을 특징으로 가진다.
-입력의 방향과 출력의 방향이 각각 고정되어있다.(영화관의 입구 하나, 출구 하나, 두 문은 다르다.)
-데이터를 입력할 시에는 큐의 끝에서(tail), 테이터를 출력할때는 큐의 맨 앞에서 (head) 진행된다.
-데이터가 입력된 순서대로 처리할때 주로 사용.
-Queue에 데이터를 넣는 것 => enqueue
 데이터를 꺼내는 것 => dequeue

#특징
1. FIFO(first in first out)
-먼저 들어간 데이터가 제일 처음에 나오는 선입선출의 구조로 되어있다.
1234들어가면 1234로 나온다.

2 두개의 입출력 방향을 가지고 있다.
-데이터의 입력, 출력 방향이 다르다
-입력할때는 큐의 맨 끝(tail)으로만 입력이 가능. 출력할때는 큐의 맨 앞(head)으로만 출력이 가능.
- Queue는 데이터를 입력하는 곳과 출력하는 곳이 각각 정해져있으며, 총2개의 입출력 방향을 가지고 있다.
(입출력방향이 같다면 Queue 자료구조라고 볼수없다.)

3. 데이터는 하나씩 넣고 뺄수있다.
-데이터를 넣을때는 tail, 뺄때는 head에서 처리를 진행한다. 각 처리시마다 한개의 data를 넣거나 뺄수있다.
-Queue에 한개씩 여러번 data를 넣어 큐 내부에 data가 여러개 쌓여 있다고 하더라도, data를 뺄때는 큐의 맨 앞에서 한번에 한개의 data만을 뺄수있다.

#실사용 예제
-컴터 장치들 사이에서 data를 주고받을때, 각 장치 사이에 존재하는 속도의 차이나 시간 차이를 극복하기 위해 임시기억장치의 자료구조로 Queue를 사용한다. 이것을 통틀어 버퍼(Buffer)라고 한다. 
-대부분의 컴퓨터 장치에서 발생하는 이벤트는 파동 그래프와 같이 불규칙적으로 발생한다. 이에 비해 CPU와 같이 발생한 이벤트를 처리하는 장치는 일정한 처리 속도를 갖는다. 불규칙적으로 발생한 이벤트를 규칙적으로 처리하기 위해 버퍼(buffer)를 사용한다.

 

넣는건 tail

나가는건 head

728x90

'부트캠프교육중 > 알고리즘' 카테고리의 다른 글

트리 순회  (0) 2023.03.15
이진트리, 이진탐색트리  (0) 2023.03.15
tree  (0) 2023.03.15
Stack  (0) 2023.03.14
자료구조  (0) 2023.03.14