#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _Queue {
int front;
int rear;
int capacity;
int* arr;
} *Queue;
Queue createQueue();
void push(Queue Q, int in);
int pop(Queue Q);
int size(Queue Q);
int emptyQueue(Queue Q);
int fullQueue(Queue Q);
int frontQueue(Queue Q);
int backQueue(Queue Q);
Queue createQueue() {
Queue Q
= (Queue
)malloc(sizeof(Queue
)); Q->front = 0;
Q->rear = 0;
Q->capacity = 10002;
Q
->arr
= malloc(sizeof(int) * Q
->capacity
);}
void push(Queue Q, int in) {//rear 하나 증가
if (!Q) {
return;
}
if (fullQueue(Q)) {
return;
}
if (Q->rear == Q->capacity - 1) {
Q->rear = 0;
}
else {
Q->rear += 1;
}
Q->arr[Q->rear] = in;
}
int pop(Queue Q) {//front 하나증가
if (!Q) {
return -1;
}
if (emptyQueue(Q)) {
return -1;
}
if (Q->front == Q->capacity - 1) {
Q->front = 0;
}
else {
Q->front += 1;
}
int data = Q->arr[Q->front];
return data;
}
int size(Queue Q) {
if (!Q) {
return -1;
}
return Q->rear - Q->front;
}
int emptyQueue(Queue Q) {
if (!Q) return 1;
return(Q->front == Q->rear); // 큐가 비어있으면 1 , 차있으면 0 반환
}
int fullQueue(Queue Q) {
return(Q->front == (Q->rear + 1) % Q->capacity); // Q가 꽉찼으면 1. 아니면 0 반환
}
int frontQueue(Queue Q) {
if (!Q) return -1;
if (emptyQueue(Q)) return -1;
if (Q->front == Q->capacity - 1) {
return Q->arr[0];
}
else {
return Q->arr[Q->front + 1];
}
}
int backQueue(Queue Q) {
if (!Q) return -1;
if (emptyQueue(Q)) return -1;
return Q->arr[Q->rear];
}
int main() {
int count = 0;
Queue Q = createQueue();
for (int i = 0; i < count; i++) {
int data;
push(Q, data);
}
else if (strcmp(s
, "pop") == 0) { }
else if (strcmp(s
, "size") == 0) { }
else if (strcmp(s
, "back") == 0) { }
else if (strcmp(s
, "front") == 0) { printf("%d\n", frontQueue
(Q
)); }
else if (strcmp(s
, "empty") == 0) { printf("%d\n", emptyQueue
(Q
)); }
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKdHlwZWRlZiBzdHJ1Y3QgX1F1ZXVlIHsKCWludCBmcm9udDsKCWludCByZWFyOwoJaW50IGNhcGFjaXR5OwoJaW50KiBhcnI7Cn0gKlF1ZXVlOwoKUXVldWUgY3JlYXRlUXVldWUoKTsKdm9pZCBwdXNoKFF1ZXVlIFEsIGludCBpbik7CmludCBwb3AoUXVldWUgUSk7CmludCBzaXplKFF1ZXVlIFEpOwppbnQgZW1wdHlRdWV1ZShRdWV1ZSBRKTsKaW50IGZ1bGxRdWV1ZShRdWV1ZSBRKTsKaW50IGZyb250UXVldWUoUXVldWUgUSk7CmludCBiYWNrUXVldWUoUXVldWUgUSk7CgpRdWV1ZSBjcmVhdGVRdWV1ZSgpIHsKCVF1ZXVlIFEgPSAoUXVldWUpbWFsbG9jKHNpemVvZihRdWV1ZSkpOwoJUS0+ZnJvbnQgPSAwOwoJUS0+cmVhciA9IDA7CglRLT5jYXBhY2l0eSA9IDEwMDAyOwoJUS0+YXJyID0gbWFsbG9jKHNpemVvZihpbnQpICogUS0+Y2FwYWNpdHkpOwp9Cgp2b2lkIHB1c2goUXVldWUgUSwgaW50IGluKSB7Ly9yZWFyIO2VmOuCmCDspp3qsIAKCWlmICghUSkgewoJCXJldHVybjsKCX0KCWlmIChmdWxsUXVldWUoUSkpIHsKCQlyZXR1cm47Cgl9CglpZiAoUS0+cmVhciA9PSBRLT5jYXBhY2l0eSAtIDEpIHsKCQlRLT5yZWFyID0gMDsKCX0KCWVsc2UgewoJCVEtPnJlYXIgKz0gMTsKCX0KCVEtPmFycltRLT5yZWFyXSA9IGluOwp9CmludCBwb3AoUXVldWUgUSkgey8vZnJvbnQg7ZWY64KY7Kad6rCACglpZiAoIVEpIHsKCQlyZXR1cm4gLTE7Cgl9CglpZiAoZW1wdHlRdWV1ZShRKSkgewoJCXJldHVybiAtMTsKCX0KCWlmIChRLT5mcm9udCA9PSBRLT5jYXBhY2l0eSAtIDEpIHsKCQlRLT5mcm9udCA9IDA7Cgl9CgllbHNlIHsKCQlRLT5mcm9udCArPSAxOwoJfQoJaW50IGRhdGEgPSBRLT5hcnJbUS0+ZnJvbnRdOwoJcmV0dXJuIGRhdGE7Cgp9CmludCBzaXplKFF1ZXVlIFEpIHsKCWlmICghUSkgewoJCXJldHVybiAtMTsKCX0KCXJldHVybiBRLT5yZWFyIC0gUS0+ZnJvbnQ7Cn0KaW50IGVtcHR5UXVldWUoUXVldWUgUSkgewoJaWYgKCFRKSByZXR1cm4gMTsKCXJldHVybihRLT5mcm9udCA9PSBRLT5yZWFyKTsgLy8g7YGQ6rCAIOu5hOyWtOyeiOycvOuptCAxICwg7LCo7J6I7Jy866m0IDAg67CY7ZmYCn0KaW50IGZ1bGxRdWV1ZShRdWV1ZSBRKSB7CglyZXR1cm4oUS0+ZnJvbnQgPT0gKFEtPnJlYXIgKyAxKSAlIFEtPmNhcGFjaXR5KTsgLy8gUeqwgCDqvYnssLzsnLzrqbQgMS4g7JWE64uI66m0IDAg67CY7ZmYCn0KaW50IGZyb250UXVldWUoUXVldWUgUSkgewoJaWYgKCFRKSByZXR1cm4gLTE7CglpZiAoZW1wdHlRdWV1ZShRKSkgcmV0dXJuIC0xOwoJaWYgKFEtPmZyb250ID09IFEtPmNhcGFjaXR5IC0gMSkgewoJCXJldHVybiBRLT5hcnJbMF07Cgl9CgllbHNlIHsKCQlyZXR1cm4gUS0+YXJyW1EtPmZyb250ICsgMV07Cgl9Cn0KaW50IGJhY2tRdWV1ZShRdWV1ZSBRKSB7CglpZiAoIVEpIHJldHVybiAtMTsKCWlmIChlbXB0eVF1ZXVlKFEpKSByZXR1cm4gLTE7CglyZXR1cm4gUS0+YXJyW1EtPnJlYXJdOwp9CgoKaW50IG1haW4oKSB7CglpbnQgY291bnQgPSAwOwoJY2hhciAqcyA9IG1hbGxvYygxMDApOwoJc2NhbmYoIiVkIiwgJmNvdW50KTsKCVF1ZXVlIFEgPSBjcmVhdGVRdWV1ZSgpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CgkJc2NhbmYoIiVzIiwgcyk7CgkJaWYgKHN0cmNtcChzLCAicHVzaCIpID09IDApIHsKCQkJaW50IGRhdGE7CgkJCXNjYW5mKCIlZCIsICZkYXRhKTsKCQkJcHVzaChRLCBkYXRhKTsKCQl9CgkJZWxzZSBpZiAoc3RyY21wKHMsICJwb3AiKSA9PSAwKSB7CgkJCXByaW50ZigiJWRcbiIsIHBvcChRKSk7CgkJfQoJCWVsc2UgaWYgKHN0cmNtcChzLCAic2l6ZSIpID09IDApIHsKCQkJcHJpbnRmKCIlZFxuIiwgc2l6ZShRKSk7CgkJfQoJCWVsc2UgaWYgKHN0cmNtcChzLCAiYmFjayIpID09IDApIHsKCQkJcHJpbnRmKCIlZFxuIiwgYmFja1F1ZXVlKFEpKTsKCQl9CgkJZWxzZSBpZiAoc3RyY21wKHMsICJmcm9udCIpID09IDApIHsKCQkJcHJpbnRmKCIlZFxuIiwgZnJvbnRRdWV1ZShRKSk7CgkJfQoJCWVsc2UgaWYgKHN0cmNtcChzLCAiZW1wdHkiKSA9PSAwKSB7CgkJCXByaW50ZigiJWRcbiIsIGVtcHR5UXVldWUoUSkpOwoJCX0KCX0KCWZyZWUoUS0+YXJyKTsKCWZyZWUoUSk7Cgp9