#include <stdio.h> #include <stdlib.h> struct Queue { int size; int f; int r; int *arr; }; int isempty(struct Queue *q) { if (q->r == q->f) { return 1; } else { return 0; } } int isfull(struct Queue *q) { if (q->r == q->size - 1) { return 1; } else { return 0; } } void enqueue(struct Queue *q, int val) { if (isfull(q)) { printf("this Queue is full"); } else { q->r++; q->arr[q->r] = val; } } int dequeue(struct Queue *q) { int a = -1; if (isempty(q)) { printf("this Queue is empty\n"); } else { q->f++; a = q->arr[q->f]; } } int peek(struct Queue* q) { if (isempty(q)) { printf("Queue is empty\n"); return -1; } return q->arr[q->f + 1]; } void printQueue(struct Queue *q) { if (isempty(q)) { printf("Queue is empty\n"); return; } printf("Queue: "); for (int i = q->f + 1; i <= q->r; i++) { printf("%d ", q->arr[i]); } printf("\n"); } int main() { struct Queue q; q.size = 10; q.f = -1; q.r = -1; q.arr = (int *)malloc(q.size * sizeof(int)); printf("before enqueue %d\n", isfull(&q)); printf("before enqueue %d\n", isempty(&q)); enqueue(&q, 12); enqueue(&q, 15); enqueue(&q, 18); enqueue(&q, 25); enqueue(&q, 30); enqueue(&q, 28); enqueue(&q, 11); enqueue(&q, 12); // enqueue printQueue(&q); printf("after enqueue %d\n", isfull(&q)); printf("after enqueue %d\n", isempty(&q)); printf("Front element peek: %d\n", peek(&q)); printf("dequeue element %d\n", dequeue(&q)); printf("dequeue element %d\n", dequeue(&q)); printf("dequeue element %d\n", dequeue(&q)); printf("dequeue element %d\n", dequeue(&q)); // printf("dequeue element %d\n", dequeue(&q)); printQueue(&q); if (isempty(&q)) { printf("Queue is empty\n"); } if (isfull(&q)) { printf("Queue is full\n"); } return 0; }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter