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
