//////
Search
📒

선형 Queue

1. 소스코드

#include <stdio.h> #include <stdlib.h> typedef struct Queue { int capacity; // 큐의 크기 int front; // 프론트 인덱스 int rear; // 리어 인덱스 int *array; // 큐 배열의 주소 } Queue; // 큐 초기화 함수 Queue* initialize(int capacity) { Queue* queue = (Queue*)malloc(sizeof(Queue)); queue->capacity = capacity; queue->front = 0; queue->rear = -1; queue->array = (int*)malloc(capacity * sizeof(int)); return queue; } // 큐가 비어있는지 확인하는 함수 int is_empty(Queue* q) { return q->front > q->rear; } // 큐가 가득 찼는지 확인하는 함수 int is_full(Queue* q) { return q->rear == q->capacity - 1; } // 큐에 원소를 추가하는 함수 void enqueue(Queue* q, int value) { if (is_full(q)) { printf("큐가 가득 찼습니다.\n"); return; } q->rear++; q->array[q->rear] = value; printf("삽입된 값: %d\n", value); } // 큐에서 원소를 제거하는 함수 void dequeue(Queue* q) { if (is_empty(q)) { printf("큐가 비어 있습니다.\n"); return; } printf("빠진 값: %d\n", q->array[q->front]); q->front++; } // 큐의 내용을 출력하는 함수 void print_queue(Queue* q) { if (is_empty(q)) { printf("큐가 비어 있습니다.\n"); return; } printf("큐 내용: "); for (int i = q->front; i <= q->rear; i++) { printf("%d ", q->array[i]); } printf("\n"); } int main(void) { int capacity; printf("큐의 사이즈를 입력하세요: "); scanf("%d", &capacity); Queue* q = initialize(capacity); // enqueue 테스트 for (int i = 1; i <= capacity; i++) { enqueue(q, i * 10); } print_queue(q); // dequeue 테스트 for (int i = 1; i <= 4; i++) { dequeue(q); } print_queue(q); free(q->array); free(q); return 0; }
C
복사

2. 실행결과

3. 고찰

없습니다.