JAVA Need OUTPUT Write a Queue implementation that uses a c
JAVA : Need OUTPUT
Write a Queue implementation that uses a circular linked list, which is the same as a linked list except that no links are null and the value of last.next is first whenever the list is not empty. Keep only one Node instance variable (last).Solution
class Node
 {
    protected String data;
    protected Node link;
   
    public Node()
    {
        data = null;
        link = null;
    }
   
    public Node(String dataValue)
    {
        data = dataValue;
    }
   
    public void setData(String dataValue)
    {
        data = dataValue;
    }
   
    public void setLink(Node linkValue)
    {
        link = linkValue;
    }
   
    public String getData()
    {
        return data;
    }
   
    public Node getLink()
    {
        return link;
    }
 }
class CircularQueue
 {
   protected Node first;
    protected Node last;
    protected int size;
   
    public CircularQueue()
    {
        first = null;
        last = null;
        size = 0;
    }
   
    public void insert(String data)
    {
        if(size == 0)
        {
            first.setData(data);
            first.setLink(first);
            last = first;
            size++;
        }
        else
        {
            if(size == 1)
            {
                first.setLink(last);
                last.setData(data);
                last.setLink(first);
                size++;
            }
            else
            {
                Node node = new Node(data, first);
                last.setLink(node);
                size++;
            }
        }
    }
   
    public String delete()
    {
        if(size == 0)
        {
            System.out.println(\"\ Queue is empty\");
        }
        else
        {
            if(size == 1)
            {
                first = last;
                last = first;
                size--;
                return first.getData();
            }
            else
            {
                Node node = first;
                first = node.getLink();
                size--;
                last.setLink(node);
                return node.getData();
            }
        }
    }
   
    public void view()
    {
        if(size == 0)
            System.out.println(\"\ Queue is Empty!\");
           
        else
        {
            Node node = first;
            do
            {
                System.out.print(\"\\t node.getData()\");
            }while (node.getLink() ! = first);
        }
    }  
       
 }
public class CircularQueueMain
 {
    public static void main(String[] args)
    {
        CircularQueue queue = new CircularQueue();
        Scanner scanner = new Scanner(System.in);
        do
        {
            System.out.println(\"\ Queue Operations : \ \ \");
            System.out.println(\"Insert :\ \");
            System.out.println(\"Remove :\ \");
            System.out.println(\"View :\ \");
            System.out.println(\"\ Enter your option :\");
            int choice = scanner.nextInt();
            switch(choice)
            {
                case 1:
                    System.out.println(\"\ Enter element to insert: \");
                    String data = scanner.next();
                    queue.insert(data);
                    queue.view();
                    break;
                case 2:
                    queue.delete();
                    queue.view();
                    break;
                case 3:
                    queue.view();
                    break;
                default:
                    System.out.println(\"\ Enter a valid option\");
                    break;
            }
            System.out.println(\"\ Do you want to continue?\\t<y/n>\ \");
        }while(scanner.next() != \"n\" || scanner.next() != \"N\");
    }
 }
       



