queue

PHOTO EMBED

Fri Sep 27 2024 12:46:00 GMT+0000 (Coordinated Universal Time)

Saved by @k_vaghasiya

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