본문 바로가기
컴퓨터공학/알고리즘

3장 큐

by Daniel.kwak 2018. 10. 14.

*큐는 밀려드는 데이터를 순차적으로 처리하기 위해 고안됨

*순환 큐는 배열의 원소를 삽입,삭제할때 발생하는 땡기거나 밀어야 하는 비용을 없애고자 전단과 후단이라는 논리적인 개념을 도입한 큐

*실제 순환큐의 크기는 +1 하여 만들고, 비어있을때는 전단과 후단의 위치가 같고, 가득 찼을때는 후단이 전단보다 -1 작은 값을 가진다.

*순환큐의 삽입은 현재 후단의 위치에 삽입 후 ++한다. (++한 위치가 capacitiy와 같다면 배열의 처음으로 후단을 옮긴다.)

*순환큐의 삭제는 현재 전단의 위치를 ++증가시킨다.(덮어쓴다는 의미이다. ++한 위치가 capacity라면 배열의 처음으로 전단을 옮긴다.)

*이 순환큐에서는 포화상태를 확인할 때 1. 전단이 앞 후단이 뒤일 경우 그 차이가 capacity인지 확인하는것과 2.후단이 앞, 전단이 뒤일때는 후단 +1 이 전단인지 확인하는 두가지 방법이 있다.

typedef int ElementType;
typedef struct tagNode {
	ElementType Data;
}Node;

typedef struct tagCircularQueue {
	int Capacitiy;
	int Front;
	int Rear; //capacity +1 값을 가진다.
	Node *nodes;
} CircularQueue;




'컴퓨터공학 > 알고리즘' 카테고리의 다른 글

8장 해쉬  (0) 2018.10.21
7장 우선순위 큐와 힙  (0) 2018.10.21
6장 탐색  (0) 2018.10.18
5장 정렬  (0) 2018.10.15
4장 트리  (0) 2018.10.15
2장 스택  (0) 2018.10.14