#include <stdio.h>
#include <stdlib.h>
#define QUEUE_SIZE 100
typedef int element;
element queue[QUEUE_SIZE]; // 큐 배열 선언
int front = 0, rear = 0; // front와 rear 초기화
int isEmpty() {
return front == rear;
}
int isFull() {
return (rear + 1) % QUEUE_SIZE == front;
}
void enqueue(element item) {
if (isFull()) {
return;
}
rear = (rear + 1) % QUEUE_SIZE;
queue[rear] = item;
}
element dequeue() {
if (isEmpty()) {
printf("\nQueue is Empty!\n"); return -1;
}
front = (front + 1) % QUEUE_SIZE;
return queue[front];
}
element peek() {
if (isEmpty()) {
printf("\nQueue is Empty!\n"); }
return queue[(front + 1) % QUEUE_SIZE];
}
void printQueue() {
if (isEmpty()) {
printf("\nQueue is Empty!\n"); return;
}
int i = (front + 1) % QUEUE_SIZE;
while (i != (rear + 1) % QUEUE_SIZE) {
i = (i + 1) % QUEUE_SIZE;
}
}
int main(void) {
element item;
printQueue();
enqueue(10); printQueue();
enqueue(20); printQueue();
enqueue(30); printQueue();
item = peek();
item = dequeue();
printQueue();
printf("\tdequeue => %d\n", item
);
item = dequeue();
printQueue();
printf("\tdequeue => %d\n", item
);
item = dequeue();
printQueue();
printf("\tdequeue => %d\n", item
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2RlZmluZSBRVUVVRV9TSVpFIDEwMAoKdHlwZWRlZiBpbnQgZWxlbWVudDsKZWxlbWVudCBxdWV1ZVtRVUVVRV9TSVpFXTsgIC8vIO2BkCDrsLDsl7Qg7ISg7Ja4CmludCBmcm9udCA9IDAsIHJlYXIgPSAwOyAgICAvLyBmcm9udOyZgCByZWFyIOy0iOq4sO2ZlAoKaW50IGlzRW1wdHkoKSB7CiAgICByZXR1cm4gZnJvbnQgPT0gcmVhcjsKfQoKaW50IGlzRnVsbCgpIHsKICAgIHJldHVybiAocmVhciArIDEpICUgUVVFVUVfU0laRSA9PSBmcm9udDsKfQoKdm9pZCBlbnF1ZXVlKGVsZW1lbnQgaXRlbSkgewogICAgaWYgKGlzRnVsbCgpKSB7CiAgICAgICAgcHJpbnRmKCJcblF1ZXVlIGlzIEZ1bGwhXG4iKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICByZWFyID0gKHJlYXIgKyAxKSAlIFFVRVVFX1NJWkU7CiAgICBxdWV1ZVtyZWFyXSA9IGl0ZW07Cn0KCmVsZW1lbnQgZGVxdWV1ZSgpIHsKICAgIGlmIChpc0VtcHR5KCkpIHsKICAgICAgICBwcmludGYoIlxuUXVldWUgaXMgRW1wdHkhXG4iKTsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CiAgICBmcm9udCA9IChmcm9udCArIDEpICUgUVVFVUVfU0laRTsKICAgIHJldHVybiBxdWV1ZVtmcm9udF07Cn0KCmVsZW1lbnQgcGVlaygpIHsKICAgIGlmIChpc0VtcHR5KCkpIHsKICAgICAgICBwcmludGYoIlxuUXVldWUgaXMgRW1wdHkhXG4iKTsKICAgICAgICBleGl0KDEpOwogICAgfQogICAgcmV0dXJuIHF1ZXVlWyhmcm9udCArIDEpICUgUVVFVUVfU0laRV07Cn0KCnZvaWQgcHJpbnRRdWV1ZSgpIHsKICAgIGlmIChpc0VtcHR5KCkpIHsKICAgICAgICBwcmludGYoIlxuUXVldWUgaXMgRW1wdHkhXG4iKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBwcmludGYoIlxuUXVldWUgWyAiKTsKICAgIGludCBpID0gKGZyb250ICsgMSkgJSBRVUVVRV9TSVpFOwogICAgd2hpbGUgKGkgIT0gKHJlYXIgKyAxKSAlIFFVRVVFX1NJWkUpIHsKICAgICAgICBwcmludGYoIiVkICIsIHF1ZXVlW2ldKTsKICAgICAgICBpID0gKGkgKyAxKSAlIFFVRVVFX1NJWkU7CiAgICB9CiAgICBwcmludGYoIl1cbiIpOwp9CgppbnQgbWFpbih2b2lkKSB7CiAgICBlbGVtZW50IGl0ZW07CiAgICAKICAgIHByaW50Zigi7Iic7LCoIO2BkCDsl7DsgrBcbiIpOwogICAgcHJpbnRRdWV1ZSgpOwogICAgCiAgICBlbnF1ZXVlKDEwKTsgcHJpbnRRdWV1ZSgpOwogICAgZW5xdWV1ZSgyMCk7IHByaW50UXVldWUoKTsKICAgIGVucXVldWUoMzApOyBwcmludFF1ZXVlKCk7CiAgICAKICAgIGl0ZW0gPSBwZWVrKCk7CiAgICBwcmludGYoInBlZWsgPT4gJWRcbiIsIGl0ZW0pOwogICAgCiAgICBpdGVtID0gZGVxdWV1ZSgpOwogICAgcHJpbnRRdWV1ZSgpOwogICAgcHJpbnRmKCJcdGRlcXVldWUgPT4gJWRcbiIsIGl0ZW0pOwogICAgCiAgICBpdGVtID0gZGVxdWV1ZSgpOwogICAgcHJpbnRRdWV1ZSgpOwogICAgcHJpbnRmKCJcdGRlcXVldWUgPT4gJWRcbiIsIGl0ZW0pOwogICAgCiAgICBpdGVtID0gZGVxdWV1ZSgpOwogICAgcHJpbnRRdWV1ZSgpOwogICAgcHJpbnRmKCJcdGRlcXVldWUgPT4gJWRcbiIsIGl0ZW0pOwogICAgCiAgICByZXR1cm4gMDsKfQo=