Data Structures Practical 21

Question 1
Write a C program to implement a linear queue with operations for enqueue (15), enqueue (48), enqueue (69), dequeue, enqueue (12), enqueue (23), dequeue, dequeue checking if the queue is empty or full, and displaying the current queue.
queue.c
C
				#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

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

void insert(int); 
int del();        
void display();   

void main()
{
    int num2 = 0;

    printf("--- Executing Operations ---\n");
    insert(15);
	display();
    insert(48);
	display();
    insert(69);
	display();
    num2 = del(); 
    display();
    insert(12);
	display();
    insert(23);
	display();
    num2 = del();
	display();	
    num2 = del(); 
    display();
    getch();
}

void insert(int element)
{
    if (front == -1) 
    {
        front = rear = 0;
        queue[rear] = element;
        printf("Inserted: %d\n", element);
        return;
    }
    if (rear == max - 1) 
    {
        printf("Queue is Full. Cannot insert %d\n", element);
        return;
    }
    rear = rear + 1;       
    queue[rear] = element; 
    printf("Inserted: %d\n", element);
}

int del()
{
    int i;
    if (front == -1 && rear == -1) 
    {
        printf("Queue is Empty. Cannot delete.\n");
        return (-9999);
    }
    if (front != -1 && front == rear) 
    {
        i = queue[front];
        front = -1;
        rear = -1;
        printf("Deleted: %d\n", i);
        return (i);
    }
    i = queue[front];
    front = front + 1;
    printf("Deleted: %d\n", i);
    return (i); 
}

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

			
Output
Question 2
Write a C program to demonstrate Queue Underflow and Queue Overflow.
checkqueue.c
C
				#include <stdio.h>
#include <conio.h>

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

void insert(int); 
int del();        
void display();   

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

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

    printf("\n=== DEMONSTRATING QUEUE OVERFLOW ===\n");
    insert(40); 
	getch();
}

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

int del()
{
    int i;
    if (front == -1 && rear == -1) 
    {
        printf("[UNDERFLOW ERROR] Queue is Empty! Cannot remove any element.\n");
        return (-9999);
    }
    if (front != -1 && front == rear) 
    {
        i = queue[front];
        front = -1;
        rear = -1;
        printf("Deleted: %d\n", i);
        return (i);
    }
    i = queue[front];
    front = front + 1;
    printf("Deleted: %d\n", i);
    return (i); 
}

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

			
Output

Leave a Comment

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