C연습
프린터_queue
CMS419
2021. 1. 17. 11:59
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 10000
typedef int element;
typedef struct {
element data[MAX_QUEUE_SIZE];
int front, rear;
}queuetype;
void init_queue(queuetype *q) {
q->front = q->rear = 0;
}
int full(queuetype *q) {
return ((q->rear + 1) % MAX_QUEUE_SIZE == q->front);
}
int empty(queuetype *q) {
if (q->front == q->rear)
return 1;
else
return 0;
}
void push(queuetype *q, element item) {
if (full(q)) return;
q->rear = (q->rear + 1) % MAX_QUEUE_SIZE;
q->data[q->rear] = item;
}
int pop(queuetype *q) {
if (empty(q))
{
printf("-1\n");
return 0;
}
printf("%d\n", q->data[q->front + 1]);
q->front = (q->front + 1) % MAX_QUEUE_SIZE;
}
void size(queuetype *q) {
printf("%d\n", (q->rear - q->front) % MAX_QUEUE_SIZE);
}
int front(queuetype *q) {
if (empty(q)) {
printf("-1\n");
return 0;
}
printf("%d\n", q->data[q->front + 1]);
}
int back(queuetype *q) {
if (empty(q)) {
printf("-1\n");
return 0;
}
printf("%d\n", q->data[q->rear]);
}
int main()
{
queuetype queue;
char str[10];
int N = 0;
init_queue(&queue);
scanf_s("%d ", &N);
for (int i = 0; i < N; i++)
{
scanf_s("%s", str, 10);
if (strcmp(str,"push") == 0)
{
element num = 0;
scanf_s("%d", &num);
push(&queue, num);
}
else if (strcmp(str, "pop") == 0) {
pop(&queue);
}
else if (strcmp(str, "size") == 0) {
size(&queue);
}
else if (strcmp(str, "empty") == 0) {
if (empty(&queue) == 1)
printf("1\n");
else
printf("0\n");
}
else if (strcmp(str, "front") == 0) {
front(&queue);
}
else if (strcmp(str, "back") == 0) {
back(&queue);
}
}
return 0;
}