An array is called circular if we consider the first element as next of the last element. Circular arrays are used to implement queue (Refer to this and this).
An example problem :
Suppose n people are sitting at a circular table with names A, B, C, D, ... Given a name, we need to print all n people (in order) starting from the given name.

For example, consider 6 people A B C D E F and given name as 'D'. People sitting in a circular manner starting from D are D E F A B C.
A simple solution is to create an auxiliary array of size 2*n and store it in another array. For example for 6 people, we create below the auxiliary array.
A B C D E F A B C D E F
Now for any given index, we simply print n elements starting from it. For example, we print the following 6.
A B C D E F A B C D E F
Below is the implementation of the above approach.
C++
// CPP program to demonstrate use of circular
// array using extra memory space
#include <bits/stdc++.h>
using namespace std;
void print(char a[], int n, int ind)
{
// Create an auxiliary array of twice size.
char b[(2 * n)];
// Copy a[] to b[] two times
for (int i = 0; i < n; i++)
b[i] = b[n + i] = a[i];
// print from ind-th index to (n+i)th index.
for (int i = ind; i < n + ind; i++)
cout << b[i] << " ";
}
// Driver code
int main()
{
char a[] = { 'A', 'B', 'C', 'D', 'E', 'F' };
int n = sizeof(a) / sizeof(a[0]);
print(a, n, 3);
return 0;
}
Java
// Java program to demonstrate use of circular
// array using extra memory space
import java.util.*;
import java.lang.*;
public class GfG{
public static void print(char a[], int n,
int ind){
// Create an auxiliary array
// of twice size.
char[] b = new char[(2 * n)];
// Copy a[] to b[] two times
for (int i = 0; i < n; i++)
b[i] = b[n + i] = a[i];
// print from ind-th index to
// (n+i)th index.
for (int i = ind; i < n + ind; i++)
System.out.print(b[i]+" ");
}
// Driver code
public static void main(String argc[]){
char[] a = new char[]{ 'A', 'B', 'C',
'D', 'E', 'F' };
int n = 6;
print(a, n, 3);
}
}
/* This code is contributed by Sagar Shukla */
Python3
# Python3 program to demonstrate use of
# circular array using extra memory space
def prints(a, n, ind):
# Create an auxiliary array of twice size.
b = [None]*2*n
i = 0
# Copy a[] to b[] two times
while i < n:
b[i] = b[n + i] = a[i]
i = i + 1
i = ind
# print from ind-th index to (n+i)th index.
while i < n + ind :
print(b[i], end = " ");
i = i + 1
# Driver Code
a = ['A', 'B', 'C', 'D', 'E', 'F']
n = len(a);
prints(a, n, 3);
#This code is contributed by rishabh_jain
C#
// C# program to demonstrate use of circular
// array using extra memory space
using System;
public class GfG {
public static void print(char[] a, int n,
int ind)
{
// Create an auxiliary array
// of twice size.
char[] b = new char[(2 * n)];
// Copy a[] to b[] two times
for (int i = 0; i < n; i++)
b[i] = b[n + i] = a[i];
// print from ind-th index to
// (n+i)th index.
for (int i = ind; i < n + ind; i++)
Console.Write(b[i] + " ");
}
// Driver code
public static void Main()
{
char[] a = new char[] { 'A', 'B', 'C',
'D', 'E', 'F' };
int n = 6;
print(a, n, 3);
}
}
/* This code is contributed by vt_m*/
JavaScript
// Function to print the circular rotation of array
function print(a, n, ind) {
// Create an auxiliary array of twice size.
let b = new Array(2 * n);
// Copy the input array 'a' to the auxiliary array 'b' twice
// so that we can rotate the array circularly
for (let i = 0; i < n; i++)
b[i] = b[n + i] = a[i];
// print from the `ind-th` index to the `(n+ind)th` index in the auxiliary array 'b'.
let output = '';
for (let i = ind; i < n + ind; i++)
output += b[i] + ' ';
console.log(output);
}
// Driver code
let a = ['A', 'B', 'C', 'D', 'E', 'F'];
let n = a.length;
// Call the function and pass the input array, its size, and the index to rotate.
print(a, n, 3);
This approach takes of O(n) time but takes extra space of order O(n)
An efficient solution is to deal with circular arrays using the same array. If a careful observation is run through the array, then after n-th index, the next index always starts from 0 so using the mod operator, we can easily access the elements of the circular list, if we use (i)%n and run the loop from i-th index to n+i-th index. and apply mod we can do the traversal in a circular array within the given array without using any extra space.
C++
// CPP program to demonstrate the use of circular
// array without using extra memory space
#include <bits/stdc++.h>
using namespace std;
// function to print circular list starting
// from given index ind.
void print(char a[], int n, int ind)
{
// print from ind-th index to (n+i)th index.
for (int i = ind; i < n + ind; i++)
cout << a[(i % n)] << " ";
}
// Driver code
int main()
{
char a[] = { 'A', 'B', 'C', 'D', 'E', 'F' };
int n = sizeof(a) / sizeof(a[0]);
print(a, n, 3);
return 0;
}
Java
// Java program to demonstrate use of circular
// array using extra memory space
import java.util.*;
import java.lang.*;
public class GfG{
// function to print circular list
// starting from given index ind.
public static void print(char a[], int n,
int ind){
// print from ind-th index to
// (n+i)th index.
for (int i = ind; i < n + ind; i++)
System.out.print(a[(i % n)] + " ");
}
// driver code
public static void main(String argc[]){
char[] a = new char[]{ 'A', 'B', 'C',
'D', 'E', 'F' };
int n = 6;
print(a, n, 3);
}
}
/* This code is contributed by Sagar Shukla */
Python3
# Python3 program to demonstrate the use of
# circular array without using extra memory space
# function to print circular list starting
# from given index ind.
def prints(a, n, ind):
i = ind
# print from ind-th index to (n+i)th index.
while i < n + ind :
print(a[(i % n)], end = " ")
i = i + 1
# Driver Code
a = ['A', 'B', 'C', 'D', 'E', 'F']
n = len(a);
prints(a, n, 3);
# This code is contributed by rishabh_jain
C#
// C# program to demonstrate use of circular
// array without using extra memory space
using System;
public class GfG {
// function to print circular list
// starting from given index ind.
public static void print(char[] a, int n,
int ind)
{
// print from ind-th index to
// (n+i)th index.
for (int i = ind; i < n + ind; i++)
Console.Write(a[(i % n)] + " ");
}
// driver code
public static void Main()
{
char[] a = new char[] { 'A', 'B', 'C',
'D', 'E', 'F' };
int n = 6;
print(a, n, 3);
}
}
/* This code is contributed by vt_m */
JavaScript
// function to print circular list
// starting from given index ind.
function print(a, n, ind) {
// print from ind-th index to
// (n+i)th index.
for (var i = 0; i < n; i++) {
console.log(a[(ind + i) % n] + " ");
}
}
// Driver code
var a = ['A', 'B', 'C', 'D', 'E', 'F'];
var n = 6;
print(a, n, 3);
This approach takes O(n) time and O(1) extra space.
More problems based on circular array :
Recent articles on circular array.
Similar Reads
Circularly Sorted Array (Sorted and Rotated Array) Circularly sorted arrays are arrays that are sorted in ascending or descending order and then rotated by a number of steps. Let us take an example to know more about circularly sorted arrays: Consider an array: arr[] = {23, 34, 45, 12, 17, 19}The elements here, {12, 17, 19, 23, 34, 45} are sorted 'I
7 min read
Circular Queue in Python A Circular Queue is a kind of queue that can insert elements inside it dynamically. Suppose, in a given array there is not any space left at the rear but we have space at the front in the normal queue it is not possible to insert elements at the front but in the case of a circular queue we can do th
3 min read
Circular primes less than n Find all circular primes less than given number n. A prime number is a Circular Prime Number if all of its possible rotations are itself prime numbers.Examples : 79 is a circular prime.as 79 and 97 are prime numbers.But 23 is not a circular prime.as 23 is prime but 32 is not a prime number. Step-by-
6 min read
How to wrap text around circular carousel in Bootstrap 4 ? Wrapping up a circular carousel is quite hectic compare to wrapping up a circular image or any shape of the image. In this article first, we have to create a carousel to make that circular, then we can use the text to wrap the carousel. First, you have to create Bootstrap Carousel. To make that caro
2 min read
What is Circular Queue | Circular Queue meaning A circular queue is an extended version of regular queue in which the last element of the queue is connected to the first element of the queue forming a cycle. Circular Queue exampleProperties of Circular Queue: Along with the properties of a regular queue the circular queue has som other unique pro
4 min read
Circular Linked List in Python A Circular Linked List is a variation of the standard linked list. In a standard linked list, the last element points to null, indicating the end of the list. However, in a circular linked list, the last element points back to the first element, forming a loop. In this article, we will discuss the c
13 min read