[c언어] 큐의 구현

큐는 데이터를 선입선출(FIFO, First In First Out) 방식으로 저장하는 자료구조입니다. 큐는 일반적으로 배열 또는 연결 리스트를 사용하여 구현됩니다. 이번 글에서는 C 언어를 사용하여 배열을 이용한 큐의 구현에 대해 알아보겠습니다.

큐 구조체 정의

#define MAX_SIZE 100

typedef struct {
    int items[MAX_SIZE];
    int front;
    int rear;
} Queue;

위 코드에서는 Queue 구조체를 정의하였습니다. items 배열은 큐에 저장되는 데이터를 담는 공간이고, frontrear는 각각 큐의 시작과 끝 인덱스를 나타냅니다.

큐 연산 구현

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