Data Structures Practical 22

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

struct Node 
{
    int data;
    struct Node* next;
};

struct Node* front = NULL;
struct Node* rear = NULL;

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

void main() 
{
    printf("--- Executing Linked List 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) 
{
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    
    if (newNode == NULL) 
	{
        printf("Queue Overflow! Out of memory.\n");
        return;
    }
    
    newNode->data = element;
    newNode->next = NULL;
    
    if (front == NULL) 
	{
        front = rear = newNode;
    } 
	else 
	{
        rear->next = newNode; 
        rear = newNode;       
    }
    printf("Enqueued: %d\n", element);
}

int dequeue() 
{
    if (front == NULL) 
	{
        printf("Queue Underflow! Queue is Empty.\n");
        return -9999;
    }
    
    struct Node* temp = front; 
    int deletedValue = temp->data;
    
    front = front->next; 
    
    if (front == NULL) 
        rear = NULL;
    
    free(temp); 
    printf("Dequeued: %d\n", deletedValue);
    return deletedValue;
}

void display() 
{
    if (front == NULL) 
	{
        printf("\nCurrent Queue: [Empty]\n");
        return;
    }
    
    struct Node* temp = front;
    printf("\nCurrent Queue elements are:\n");
    while (temp != NULL) 
	{
        printf("%d\t", temp->data);
        temp = temp->next;
    }
    printf("\n");
}

			
Output

Leave a Comment

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