Data Structures Practical 23

Question 1
Write a C program to implement a Circular queue using Array with operations for enqueue (15), enqueue (48), enqueue (69), dequeue, enqueue (12), enqueue (23), dequeue, dequeue.
circularq.c
C
				#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define max 5 
int queue[max];
int front = -1;
int rear = -1;

void enqueue(int);
int dequeue();
void display();

void main() 
{
    printf("--- Executing Circular Queue Operations ---\n");

    enqueue(15);
    enqueue(48);
    enqueue(69);
    display();
    dequeue();
    display();
    enqueue(12);
    enqueue(23);
    display();
    dequeue();
    dequeue();
    display();
	getch();
}

void enqueue(int element) 
{
    if ((front == 0 && rear == max - 1) || front == rear + 1)
    {
        printf("\nQueue is Full.");
        return;
    }
    if (front == -1) 
    {
        front = rear = 0;
    }
    else if (rear == max - 1)
        rear = 0; 
    else
        rear = rear + 1;   
    queue[rear] = element;
    printf("\nEnqueued: %d (at index %d)\n", element, rear);
}

int dequeue() {
    if (front == -1) 
	{
        printf("\nQueue Underflow! Queue is Empty.\n");
        return -9999;
    }
    
    int deletedValue = queue[front];
    printf("\nDequeued: %d (from index %d)\n", deletedValue, front);
    
    if (front == rear) 
    {
        front = rear = -1;
        return (deletedValue);
    }
    else if (front == max - 1)
    {
        front = 0; 
        return (deletedValue);
    }
    else
    {
        front = front + 1; 
        return (deletedValue);
    }
}

void display() 
{
    int i;
    if (front == -1)
    {
        printf("\nQueue is Empty.");
        return;
    }
    printf("\nThe various queue elements are :\n");
    i = front;
    while (i != rear)
    {
        printf("%d\t", queue[i]); 
        if (i == max - 1)
            i = 0;
        else
            i = i + 1;
    }
    printf("%d\t", queue[i]);
}

			
Output
Question 2
Write a C program to implement a Queue overflow and underflow operations on Circular Queue using Array.
checkqueue.c
C
				#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define max 3 
int queue[max];
int front = -1;
int rear = -1;

void enqueue(int);
int dequeue();
void display();

void main() 
{
    printf("=== DEMONSTRATING CIRCULAR QUEUE UNDERFLOW ===\n");
    dequeue(); 

    printf("\n=== FILLING THE CIRCULAR QUEUE ===\n");
    enqueue(10);
    enqueue(20);
    enqueue(30);
    display();

    printf("\n=== DEMONSTRATING CIRCULAR QUEUE OVERFLOW ===\n");
    enqueue(40); 

    printf("\n=== CREATING VACANT SPACE AND WRAPPING AROUND ===\n");
    dequeue(); 
    display();
    enqueue(40); 
    display();

    printf("\n=== TRIGGERING OVERFLOW AFTER WRAP-AROUND ===\n");
    enqueue(50); 
	getch();
}

void enqueue(int element) 
{
    if ((front == 0 && rear == max - 1) || front == rear + 1)
    {
        printf("[OVERFLOW ERROR] Queue is Full! Cannot enqueue %d.\n", element);
        return;
    }
    if (front == -1) 
    {
        front = rear = 0;
    }
    else if (rear == max - 1)
    {
        rear = 0; 
    else
    {
        rear = rear + 1;   
    }
    queue[rear] = element;
    printf("Enqueued: %d (at index %d)\n", element, rear);
}

int dequeue() 
{
    if (front == -1) 
    {
        printf("[UNDERFLOW ERROR] Queue Underflow! Queue is Empty.\n");
        return -9999;
    }
    
    int deletedValue = queue[front];
    printf("Dequeued: %d (from index %d)\n", deletedValue, front);
    
    if (front == rear) 
    {
        front = rear = -1; 
    }
    else if (front == max - 1)
    {
        front = 0; 
    }
    else
    {
        front = front + 1; 
    }
    return deletedValue;
}

void display() 
{
    int i;
    if (front == -1)
    {
        printf("Queue is Empty.\n");
        return;
    }
    printf("Current Queue elements: ");
    i = front;
    while (i != rear)
    {
        printf("%d ", queue[i]); 
        if (i == max - 1)
            i = 0;
        else
            i = i + 1;
    }
    printf("%d\n", queue[i]); 
}

			
Output

Leave a Comment

Your email address will not be published. Required fields are marked *