The enqueue operation on the Queue ADT adds a new item to the back of the queue where the dequeue operation removes and returns the item from the front of the queue. Now consider an initially empty queue and find the final output for the following sequence of queue operations: enqueue(7); enqueue(9); enqueue(1); dequeue(); enqueue(8); dequeue(); dequeue(); enqueue(6); enqueue(3); dequeue(); enqueue(2); enqueue(1); dequeue(); Solution import java.util.*; java.io.*; java.lang.*; class Queue { private ArrayList list; public Queue() { list = new ArrayList(); } public void enqueue(Object object) { if(list.isFull()) System.out.println(“Queue overflowedâ€); else list.add(object); } public Object dequeue() { if(list.isEmpty()) System.out.println(“Queue underflowâ€); else return list.remove(list.size() - 1); } public boolean isEmpty() { return list.isEmpty(); } public Object front() { return list.get(list.size() - 1); } public Object back() { return list.get(index); } public void clear() { list.clear(); } } class QSample { public static void main(String args[]) throws Exception { Queue q=new Queue();   while(true) { System.out.println(\"\ \\t QUEUE \"); q.enqueue(7); q.enqueue(9); q.enqueue(1); q.back(); q.dequeue(); q.enqueue(8); q.dequeue(); q.dequeue(); q.enqueue(6); q.enqueue(3); q.dequeue(); q.enqueue(2); q.enqueue(1); q.dequeue(); System.out.println(\"Exit\"); } } } The Final output is : 3 2 1 .