# What Is Circular Array in Data Structure?

//

Angela Bailey

A circular array is a data structure that consists of a fixed-size array, where the elements are stored in a circular manner. In other words, when the last element is reached, the next element is the first element of the array.

This creates a circular loop-like structure, hence the name “circular array. “

## How Does a Circular Array Work?

To understand how a circular array works, let’s consider an example with five elements: A, B, C, D, and E. These elements are stored in an array with indices 0 to 4.

Initially, the first element (A) is stored at index 0. As we insert more elements into the circular array, they are placed one after another in consecutive indices until we reach the end of the array.

Once we reach the end of the array (index 4), instead of throwing an error or stopping further insertion, we start from the beginning again. The next element gets inserted at index 0 and continues in this cyclic manner.

• Efficient Memory Usage: Circular arrays can efficiently use memory by reusing previously allocated memory space when reaching the end of the array.
• Faster Access: Since all elements are stored contiguously in memory, accessing elements in a circular array is faster compared to other data structures like linked lists.
• Easy Implementation: Implementing a circular array is relatively straightforward as it involves basic indexing operations.

## Common Use Cases

Circular arrays find applications in various scenarios:

• Buffer Management: Circular arrays are often used in buffer management systems, where data needs to be continuously read and written in a cyclic manner.
• Task Scheduling: Circular arrays can be used to implement round-robin task scheduling algorithms, where tasks are executed in a cyclic order.
• Cache Implementation: Caches in computer systems often use circular arrays to store frequently accessed data for faster retrieval.

## Implementing a Circular Array in JavaScript

To implement a circular array in JavaScript, we can use modular arithmetic to handle the wrap-around behavior. Here’s an example:

``````<script>
class CircularArray {
constructor(size) {
this.array = new Array(size);
this.tail = 0;
}

enqueue(element) {
if ((this.tail + 1) % this.array.length === this.head) {
// Circular array is full, handle accordingly
return false;
}

this.array[this.tail] = element;
this.tail = (this.length;
return true;
}

dequeue() {
// Circular array is empty, handle accordingly
return null;
}

return element;
}
}

const circularArray = new CircularArray(5);
circularArray.enqueue('A');
circularArray.enqueue('B');
circularArray.enqueue('C');
circularArray.enqueue('D');
circularArray.enqueue('E');

console.log(circularArray.dequeue()); // Output: A
console.dequeue()); // Output: B
console.dequeue()); // Output: C
</script>``````

In this example, we define a class called CircularArray that maintains an array, along with head and tail pointers. The enqueue() function inserts elements into the circular array, while the dequeue() function removes elements from the circular array.

### Conclusion

Circular arrays provide an efficient way to store and access data in a cyclic manner. They offer advantages such as efficient memory usage, faster access times, and easy implementation. Understanding circular arrays can be useful for solving various problems that require cyclical data storage and retrieval.