[c언어] 큐의 구현
큐는 데이터를 선입선출(FIFO, First In First Out) 방식으로 저장하는 자료구조입니다. 큐는 일반적으로 배열 또는 연결 리스트를 사용하여 구현됩니다. 이번 글에서는 C 언어를 사용하여 배열을 이용한 큐의 구현에 대해 알아보겠습니다.
큐 구조체 정의
#define MAX_SIZE 100
typedef struct {
int items[MAX_SIZE];
int front;
int rear;
} Queue;
위 코드에서는 Queue
구조체를 정의하였습니다. items
배열은 큐에 저장되는 데이터를 담는 공간이고, front
와 rear
는 각각 큐의 시작과 끝 인덱스를 나타냅니다.
큐 연산 구현
enqueue: 큐에 데이터 추가
void enqueue(Queue* queue, int value) {
if (queue->rear == MAX_SIZE - 1) {
printf("Queue is full\n");
} else {
queue->items[++(queue->rear)] = value;
}
}
dequeue: 큐에서 데이터 삭제
int dequeue(Queue* queue) {
if (queue->front > queue->rear) {
printf("Queue is empty\n");
return -1;
} else {
return queue->items[(queue->front)++];
}
}
isEmpty: 큐가 비어있는지 확인
int isEmpty(Queue* queue) {
return queue->front > queue->rear;
}
isFull: 큐가 가득 차있는지 확인
int isFull(Queue* queue) {
return queue->rear == MAX_SIZE - 1;
}
예제
int main() {
Queue queue;
queue.front = 0;
queue.rear = -1;
enqueue(&queue, 10);
enqueue(&queue, 20);
enqueue(&queue, 30);
printf("%d dequeued from queue\n", dequeue(&queue));
printf("%d dequeued from queue\n", dequeue(&queue));
}
결론
이번 글에서는 C 언어를 사용하여 배열을 이용한 큐의 구현에 대해 살펴보았습니다. 큐는 데이터의 순서가 매우 중요한 경우에 유용하게 사용될 수 있는 자료구조이므로, 여러분들의 프로그래밍 실무에서도 유용하게 활용될 수 있을 것입니다.
참고문헌: GeeksforGeeks - Queue Data Structure