자료구조 큐 c언어 소스
#include <stdio.h>
#define MAX_QUEUE_SIZE 5
typedef int element;
typedef struct {
element data[MAX_QUEUE_SIZE];
int front, rear;
}QueueType;
typedef QueueType* QueueType_ptr;
void init(QueueType_ptr q) {
q->front = 0;
q->rear = 0;
}
int is_empty(QueueType q) {
if (q.front == q.rear)
return 1;
else
return 0;
};
int is_full(QueueType q) {
if ((q.rear + 1) % MAX_QUEUE_SIZE == q.front)
return 1;
else
return 0;
}
void enqueue(QueueType_ptr q, int item) {
if (!is_full(*q)) {
q->rear = (q->rear + 1) % MAX_QUEUE_SIZE;
q->data[q->rear] = item;
}
else
printf("큐가 꽉 찼습니다");
}
int dequeue(QueueType_ptr q) {
if (!is_empty(*q)) {
q->front = (q->front + 1) % MAX_QUEUE_SIZE;
return q->data[q->front];
}
else
printf("큐가 비어 있습니다");
}
int peek(QueueType q) {
if (!is_empty(q))
return q.data[(q.front + 1) % MAX_QUEUE_SIZE];
else
printf("큐가 비어 있습니다");
}
int main() {
QueueType q;
init(&q);
enqueue(&q, 10); // 10
enqueue(&q, 11); // 10 11
enqueue(&q, 12); // 10 11 12
printf("[%d]\n", dequeue(&q)); // 10 <- 10 11 12
printf("[%d]", peek(q)); // 11 12
}
