Circular Queue using Linked List in Java
Implementation of Circular Queue using linked list
Circular Queue is a linear data structure in which the operations are performed based on FIFO (First In First Out) principle and the last position is connected back to the first position.
A circular queue overcomes the problem of unused space in normal queues, and it can be implemented on both arrays and linked list.
Operation In Circular Queue:
The following are the operations that can be performed on a circular queue:
- Front: It is used to get the front item from the Queue.
- Rear: It is used to get the last element from the Queue.
- enQueue() This operation adds a new node after rear and moves rear to the next node.
- deQueue() This operation removes the front node and moves front to the next node.
Algorithm for Insertion and Deletion:
Insertion
Deletion
Insertion
- START
static void enQueue(Queue q, int d)
{
Node tp = new Node();
tp.data =d;
if (q.front == null)
q.front = tp;
else
q.rear.next = tp;
q.rear = tp;
q.rear.next = q.front;
}
- END
Deletion
- START
static int deQueue(Queue q)
{
if (q.front == null) {
System.out.print(“empty queue”);
}
int d;
if (q.front == q.rear)
{
d=q.front.data;
q.front = null;
q.rear = null;
}
else
{
Node tp = q.front;
d=tp.data;
q.front = q.front.next;
q.rear.next = q.front;
}
return d
}
- END
Java code for implementing circular queue using array
Run
import java.util.*;
class Main
{
static class Node
{
int data;
Node next;
}
static class Queue
{
Node front, rear;
}
static void enQueue (Queue q, int d)
{
Node tp = new Node ();
tp.data = d;
if (q.front == null)
q.front = tp;
else
q.rear.next = tp;
q.rear = tp;
q.rear.next = q.front;
}
static int deQueue (Queue q)
{
if (q.front == null)
{
System.out.print ("empty queue");
}
int d;
if (q.front == q.rear)
{
d = q.front.data;
q.front = null;
q.rear = null;
}
else
{
Node tp = q.front;
d = tp.data;
q.front = q.front.next;
q.rear.next = q.front;
}
return d;
}
// Function displaying the elements
static void displayQueue (Queue q)
{
Node tp = q.front;
System.out.print ("Elements in Circular Queue are: ");
while (tp.next != q.front)
{
System.out.print (tp.data + " ");
tp = tp.next;
}
System.out.println (tp.data);
}
public static void main (String args[])
{
// Creating a queue
Queue q = new Queue ();
q.front = q.rear = null;
// Inserting elements in Circular Queue
enQueue (q, 20);
enQueue (q, 40);
enQueue (q, 60);
// Display elements
displayQueue (q);
// Deleting elements
System.out.println (deQueue (q));
System.out.println (deQueue (q));
System.out.println ("AFTER DELETING, ELEMENT LEFT ");
// Remaining elements in Circular Queue
displayQueue (q);
System.out.println ("AFTER INSERTING NEW VALUE ");
enQueue (q, 80);
displayQueue (q);
}
}
Output:
Elements in Circular Queue are: 20 40 60 20 40 AFTER DELETING, ELEMENT LEFT Elements in Circular Queue are: 60 AFTER INSERTING NEW VALUE Elements in Circular Queue are: 60 80
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Get over 200+ course One Subscription
Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others
Stacks
- Introduction to Stack in Data Structure
Click Here - Operations on a Stack
Click Here - Stack: Infix, Prefix and Postfix conversions
Click Here - Stack Representation in –
C | C++ | Java - Representation of a Stack as an Array. –
C | C++ | Java - Representation of a Stack as a Linked List. –
C | C++ | Java - Infix to Postfix Conversion –
C | C++ | Java - Infix to prefix conversion in –
C | C++ | Java - Postfix to Prefix Conversion in –
C | C++ | Java
Queues
- Queues in Data Structures (Introduction)
Click Here - Queues Program in C and implementation
Click Here - Implementation of Queues using Arrays | C Program
Click Here - Types of Queues in Data Structure
Click Here - Application of Queue Data Structure
Click Here - Insertion in Queues Program (Enqueuing) –
C | C++ | Java - Deletion (Removal) in Queues Program(Dequeuing) –
C | C++ | Java - Reverse a Queue –
C | C++ | Java - Queues using Linked Lists –
C | C++ | Java - Implement Queue using Stack –
C | C++ | Java - Implement Queue using two Stacks –
C | C++ | Java
Circular Queues
- Circular queue in Data Structure
Click Here - Applications of Circular Queues
Click Here - Circular queue in –
C | C++ | Java - Circular queue using Array –
C | C++ | Java - Circular Queue using Linked Lists –
C | C++ | Java
Priority Queue
Stacks
- Introduction to Stack in Data Structure
- Operations on a Stack
- Stack: Infix, Prefix and Postfix conversions
- Stack Representation in – C | C++ | Java
- Representation of a Stack as an Array. – C | C++ | Java
- Representation of a Stack as a Linked List. – C | C++ | Java
- Infix to Postfix Conversion – C | C++ | Java
- Infix to prefix conversion in – C | C++ | Java
- Postfix to Prefix Conversion in – C | C++ | Java
Queues
- Queues in Data Structures (Introduction)
- Queues Program in C and implementation
- Implementation of Queues using Arrays | C Program
- Types of Queues in Data Structure
- Application of Queue Data Structure
- Insertion in Queues Program (Enqueuing) – C | C++ | Java
- Deletion (Removal) in Queues Program(Dequeuing) – C | C++ | Java
- Reverse a Queue – C | C++ | Java
- Queues using Linked Lists – C | C++ | Java
- Implement Queue using Stack – C | C++ | Java
- Implement Queue using two Stacks – C | C++ | Java
Circular Queues
- Circular queue in Data Structure
- Applications of Circular Queues
- Circular queue in – C | C++ | Java
- Circular queue using Array – C | C++ | Java
- Circular Queue using Linked Lists – C | C++ | Java

Login/Signup to comment