자료 구조2012. 5. 17. 11:51

먼저 들어가고 먼저나오는 '선입선출' 자료구조 (FIFO : First In First Out)


큐의 주요 기능

  • 삽입 (Enqueue)
  • 제거 (Dequeue)
큐의 가장 앞 요소를 전단(Front), 가장 마지막 요소를 후단(Rear) 라고 한다.
큐의 삽입은 후단, 제거는 전단에서 수행된다.


순환 큐 (Circular Queue)

일반적인 배열을 사용하여 큐를 구현하였을때 생기는 "요소를 이동시키는데 발생하는 비용문제, 가용 용량 감소문제"가 발생한다.

이를 해결하기 위해서 큐의 시작과 끝을 연결하여 순환하도록 하는 것이 '순환 큐'이다.


배열의 처음과 끝이 연결되어 원을 이룬다는 가정하에

전단과 후단을 가리키는 변수를 사용, 삽인과 삭제 연산이 수행 될 때마다 전단과 후단의 위치를 변경해주는 방식

※ 배열의 크기는 큐의 크기보다 '1'크게 만들어서 사용한다 (배열의 크기와 큐의 크기가 같을 경우 empty상태와 full상태를 구분하지 못한다.)


큐의 노드 구조체

typedef int ElementType;


typedef struct tagNode

{

ElementType Data;

} Node;


순환 큐의 구조체

typedef struct tagCircularQueue

{

int Capacity;    //용량

int Front;        //전단의 위치

int Rear;        //후단의 위치

Node* Nodes;    //노드 배열

} CircularQueue;

전단과 후단의 위치를 가지는 변수 Front, Rear는 배열 내의 인덱스 값을 가진다.


CircularQueue 소스코드





'자료 구조' 카테고리의 다른 글

Tree (트리)  (0) 2012.05.23
Linked Queue(링크드 큐)  (0) 2012.05.23
Stack : 사칙 연산 계산기  (0) 2012.05.14
Stack (스택)  (0) 2012.05.11
Circular Linked List (환형 연결 리스트)  (0) 2012.05.11
Posted by elluma