1. 큐(queue)
선형 자료구조
먼저 들어간 데이터가 먼저 나오는 자료구조(First In First Out)
큐에 자료를 넣는 것을 enqueue
큐에 자료를 빼는 것을 dequeue라고 부른다
front, rear 포인터가 무조건 뒤로만 이동하여, 앞부분의 데이터가 삭제되면 다시 삽입할 수 없다는 단점이 있다
front 포인터는 삭제할 위치
rear 포인터는 삽입할 위치

여기서 10을 넣으면

다시 20을 넣으면

다시 30을 넣으면

이제 10을 제거하면

다시 20을 제거하면

여기서 40을 넣으면...
앞에 들어가는게 아니고 뒤에 들어가는데 이렇게 앞에 공간이 비어있음에도 활용하지 못하는 단점이 있다

2. 원형 큐(circular queue)
큐의 끝과 시작을 연결한 큐
rear 포인터가 끝에 도달했으면 다시 처음으로 되돌아옴
여전히 먼저 삽입한 데이터가 먼저 나온다는 First In First Out의 구조이지만,
선형 큐와는 다르게 rear 포인터가 끝에 도달하면 처음으로 다시 돌아오므로,
앞에 빈 공간에도 삽입할 수 있다는 장점이 있다.

10, 20, 30을 순서대로 넣으면

10,20을 제거하면

여기서 40을 넣으면 rear 포인터가 앞으로 되돌아와서 40을 넣는다

여기서 dequeue를 하면 어떤 데이터가 빠질까?
앞에 있는 40이 빠지나 뒤에 있는 30이 빠지나?
어쨌든 원형 큐도 큐이므로 먼저 들어온 30이 빠지게 된다

특이할 사항으로 여기서 마지막 한칸을 비워뒀는데
원형 큐 구현할 때는 한칸을 비워두는게 보통이래
front를 첫번째 데이터의 인덱스(삭제할 데이터의 인덱스), rear을 현재 빈 곳라고 한다면,
front = rear이면 공백 상태
(rear+1) % (큐 사이즈) = front이면 포화 상태로 쉽게 구별할 수 있다네
front = rear이면 공백인건 너무 명확하고
포화상태이면 다음 그림과 같다

(r+1) % q = f이면 삽입이 불가능해서, 삭제만 해야한다.
꼭 한칸 안비워도 되는데 비우면 구현이 편해진대
'컴퓨터과학(CS)' 카테고리의 다른 글
| 비트연산자 &와 논리연산자 and의 차이점(단축 평가) (0) | 2026.01.04 |
|---|---|
| 머신러닝과 컴퓨터의 문제 해결 방법 차이 (0) | 2024.11.19 |
| 컴퓨터과학에서 말하는 problem (0) | 2024.11.12 |
| algorithm과 library의 의미 (0) | 2024.09.08 |
| 컴퓨터과학에서 말하는 quantization 개념 (0) | 2024.06.18 |