DSU EXP 22
DSU EXP 22
Write a 'C' Program to perform INSERT and DELETE operations on Linear Queue
using a Linked List.
#include<stdio.h>
#include<stdlib.h>
struct node
int data;
};
void insert();
void delete();
void display();
void main ()
int choice;
while(choice != 4)
printf("\n***Main Menu***\n");
printf("\n1.insert an element\n2.Delete an element\n3.Display the queue\
n4.Exit\n");
scanf("%d",& choice);
switch(choice)
case 1:
insert();
break;
case 2:
delete();
break;
case 3:
display();
break;
case 4:
exit(0);
break;
default:
}
void insert()
int item;
if(ptr == NULL)
printf("\nOVERFLOW\n");
return;
else
printf("\nEnter value:\n");
scanf("%d",&item);
if(front == NULL)
front = ptr;
rear = ptr;
}
else
rear = ptr;
rear->next = NULL;
void delete ()
if(front == NULL)
printf("\nUNDERFLOW\n");
return;
else
ptr = front;
free(ptr);
}
void display()
ptr = front;
if(front == NULL)
printf("\nEmpty queue\n");
else
while(ptr != NULL)
}
Practical Related:
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.
#include <stdio.h>
#include <stdlib.h>
int data;
} node;
node* front;
node* rear;
} queue;
if (newNode == NULL)
return NULL;
newNode->data = data;
newNode->next = NULL;
return newNode;
queue* createQueue()
return newQueue;
int isEmpty(queue* q)
if (!newNode) {
printf("Queue Overflow!\n");
return;
if (q->rear == NULL)
{
q->front = q->rear = newNode;
return;
q->rear->next = newNode;
q->rear = newNode;
int dequeue(queue* q)
if (isEmpty(q)) {
printf("Queue Underflow\n");
return -1;
q->front = q->front->next;
if (q->front == NULL)
q->rear = NULL;
free(temp);
return data;
int peek(queue* q)
if (isEmpty(q))
return -1;
return q->front->data;
void printQueue(queue* q)
temp = temp->next;
printf("NULL\n");
int main()
queue* q = createQueue();
enqueue(q, 15);
enqueue(q, 48);
enqueue(q, 69);
printf("Queue: ");
printQueue(q);
dequeue(q);
printf("Queue: ");
printQueue(q);
enqueue(q,12);
enqueue(q,23);
printf("Queue: ");
printQueue(q);
dequeue(q);
printf("Queue: ");
printQueue(q);
return 0;
Exercise
1 . Dynamic Size:
A linked list provides a dynamically allocated structure, meaning the size of the queue
can grow or shrink as needed without the need for resizing or reallocation, unlike arrays
with fixed sizes.
Enqueue (adding to the rear) and Dequeue (removing from the front) operations in a
queue implemented with a linked list are both efficient. 3. No Memory Wastage:
4. No Shifting Required:
Unlike arrays, where dequeuing may require shifting elements to maintain order, in a
linked list, no such shifting is necessary. The queue’s front is simply moved by updating
the head pointer.
In a linked list, there’s no concept of "overflow" (unless the system runs out of memory)
because the size is only limited by available memory.