-
#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; }