public
class
CircularBuffer {
private
int
[] buffer;
private
int
front;
private
int
rear;
private
int
size;
public
CircularBuffer(
int
capacity)
{
buffer =
new
int
[capacity];
front = -
1
;
rear = -
1
;
size =
0
;
}
public
boolean
isEmpty()
{
return
size
==
0
;
}
public
boolean
isFull()
{
return
size == buffer.length;
}
public
void
insertAtStart(
int
value)
{
if
(isFull()) {
System.out.println(
"Buffer is full. Cannot insert."
);
return
;
}
if
(isEmpty()) {
front =
0
;
rear =
0
;
}
else
{
front = (front -
1
+ buffer.length)
% buffer.length;
}
buffer[front] = value;
size++;
}
public
void
insertAtEnd(
int
value)
{
if
(isFull()) {
System.out.println(
"Buffer is full. Cannot insert."
);
return
;
}
if
(isEmpty()) {
front =
0
;
rear =
0
;
}
else
{
rear = (rear +
1
) % buffer.length;
}
buffer[rear] = value;
size++;
}
public
void
deleteFromStart()
{
if
(isEmpty()) {
System.out.println(
"Buffer is empty. Cannot delete."
);
return
;
}
if
(size ==
1
) {
front = -
1
;
rear = -
1
;
}
else
{
front = (front +
1
) % buffer.length;
}
size--;
}
public
void
deleteFromEnd()
{
if
(isEmpty()) {
System.out.println(
"Buffer is empty. Cannot delete."
);
return
;
}
if
(size ==
1
) {
front = -
1
;
rear = -
1
;
}
else
{
rear = (rear -
1
+ buffer.length)
% buffer.length;
}
size--;
}
public
void
display()
{
if
(isEmpty()) {
System.out.println(
"Circular Buffer is empty."
);
return
;
}
System.out.print(
"Circular Buffer: "
);
int
count =
0
;
int
index = front;
while
(count < size) {
System.out.print(buffer[index] +
" "
);
index = (index +
1
) % buffer.length;
count++;
}
System.out.println();
}
public
static
void
main(String[] args)
{
CircularBuffer circularBuffer
=
new
CircularBuffer(
5
);
circularBuffer.insertAtEnd(
1
);
circularBuffer.insertAtEnd(
2
);
circularBuffer.insertAtEnd(
3
);
circularBuffer.display();
circularBuffer.deleteFromStart();
circularBuffer.display();
circularBuffer.insertAtStart(
4
);
circularBuffer.insertAtEnd(
5
);
circularBuffer.display();
circularBuffer.deleteFromEnd();
circularBuffer.display();
}
}