Wednesday 29 November 2017

Java Program to implement Circular Buffer


Code:

 import java.util.Scanner;

/** Class Circular Buffer **/
class CircularBuffer
{
    private int maxSize;
    private int front = 0;  
    private int rear = 0;  
    private int bufLen = 0;  
    private char[] buf;    

    /** constructor **/
    public CircularBuffer(int size) 
    {
        maxSize = size;
        front = rear = 0;
        rear = 0;
        bufLen = 0;
        buf = new char[maxSize];
    }
    /** function to get size of buffer **/
    public int getSize()
    {
        return bufLen;
    }
    /** function to clear buffer **/
    public void clear()
    {
        front = rear = 0;
        rear = 0;
        bufLen = 0;
        buf = new char[maxSize];
    }
    /** function to check if buffer is empty **/
    public boolean isEmpty() 
    {
        return bufLen == 0;
    }
    /** function to check if buffer is full **/
    public boolean isFull() 
    {
        return bufLen == maxSize;
    } 
    /** insert an element **/
    public void insert(char c) 
    {
        if (!isFull() ) 
        {
            bufLen++;
            rear = (rear + 1) % maxSize;
            buf[rear] = c;
        }
        else
            System.out.println("Error : Underflow Exception");
    }
    /** delete an element **/
    public char delete() 
    {
        if (!isEmpty() ) 
        {
            bufLen--;
            front = (front + 1) % maxSize;
            return buf[front];
        }
        else 
        {
            System.out.println("Error : Underflow Exception");
            return ' ';
        }
    }       
    /** function to print buffer **/
    public void display() 
    {
        System.out.print("\nBuffer : ");
        for (int i = 0; i < maxSize; i++)
            System.out.print(buf[i] +" ");
        System.out.println();    
    }
}


/** Class CircularBufferTest  **/
public class CircularBufferTest
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);

        System.out.println("Circular Buffer Test\n");
        System.out.println("Enter Size of Buffer ");
        int n = scan.nextInt();
        /* creating object of class CircularBuffer */
        CircularBuffer cb = new CircularBuffer(n); 

        /* Perform Circular Buffer Operations */        
        char ch;

        do
        {
            System.out.println("\nCircular Buffer Operations");
            System.out.println("1. insert");
            System.out.println("2. remove");
            System.out.println("3. size");
            System.out.println("4. check empty");
            System.out.println("5. check full");
            System.out.println("6. clear");

            int choice = scan.nextInt();
            switch (choice)
            {
            case 1 : 
                System.out.println("Enter character to insert");
                cb.insert( scan.next().charAt(0) );                                        
                break;                         
            case 2 : 
                System.out.println("Removed Element = "+ cb.delete());
                break;                         
            case 3 : 
                System.out.println("Size = "+ cb.getSize());
                break;                            
            case 4 : 
                System.out.println("Empty status = "+ cb.isEmpty());
                break;                
            case 5 : 
                System.out.println("Full status = "+ cb.isFull());
                break; 
            case 6 : 
                System.out.println("\nBuffer Cleared\n");
                cb.clear();
                break;                                    
            default : System.out.println("Wrong Entry \n ");
                break;
            }
            /* display Buffer */
            cb.display();     

            System.out.println("\nDo you want to continue (Type y or n) \n");
            ch = scan.next().charAt(0);

        } while (ch == 'Y'|| ch == 'y');                                                        
    }    
}


Output:

Circular Buffer Test

Enter Size of Buffer
5

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
1
Enter character to insert
a

Buffer :   a

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
1
Enter character to insert
b

Buffer :   a b

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
1
Enter character to insert
c

Buffer :   a b c

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
1
Enter character to insert
d

Buffer :   a b c d

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
1
Enter character to insert
e

Buffer : e a b c d

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
1
Enter character to insert
f
Error : Underflow Exception

Buffer : e a b c d

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
2
Removed Element = a

Buffer : e a b c d

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
1
Enter character to insert
f

Buffer : e f b c d

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
3
Size = 5

Buffer : e f b c d

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
5
Full status = true

Buffer : e f b c d

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
2
Removed Element = b

Buffer : e f b c d

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
3
Size = 4

Buffer : e f b c d

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
6

Buffer Cleared


Buffer :

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
3
Size = 0

Buffer :

Do you want to continue (Type y or n)

y

Circular Buffer Operations
1. insert
2. remove
3. size
4. check empty
5. check full
6. clear
4
Empty status = true

Buffer :

Do you want to continue (Type y or n)

n



More Java Programs:


















100+ Best Home Decoration Ideas For Christmas Day 2019 To Make Home Beautiful

Best gifts for Christmas Day | Greeting cards for Christmas Day | Gift your children a new gift on Christmas day This Christmas d...