Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Need help with a Java problem: Queue.java: import stdlib.*; import java.util.Ite

ID: 3846050 • Letter: N

Question

Need help with a Java problem:

Queue.java:

import stdlib.*;
import java.util.Iterator;
import java.util.NoSuchElementException;

public class Queue<T> implements Iterable<T> {
   private int N; // number of elements on queue
   private Node<T> first; // beginning of queue
   private Node<T> last; // end of queue

   // helper linked list class
   private static class Node<T> {
       public Node() { }
       public T item;
       public Node<T> next;
   }

   /**
   * Create an empty queue.
   */
   public Queue() {
       first = null;
       last = null;
       N = 0;
   }

   /**
   * Is the queue empty?
   */
   public boolean isEmpty() {
       return first == null;
   }

   /**
   * Return the number of items in the queue.
   */
   public int size() {
       return N;
   }

   /**
   * Return the item least recently added to the queue.
   * @throws java.util.NoSuchElementException if queue is empty.
   */
   public T peek() {
       if (isEmpty()) throw new NoSuchElementException("Queue underflow");
       return first.item;
   }

   /**
   * Add the item to the queue.
   */
   public void enqueue(T item) {
       Node<T> oldlast = last;
       last = new Node<>();
       last.item = item;
       last.next = null;
       if (isEmpty()) first = last;
       else oldlast.next = last;
       N++;
   }

   /**
   * Remove and return the item on the queue least recently added.
   * @throws java.util.NoSuchElementException if queue is empty.
   */
   public T dequeue() {
       if (isEmpty()) throw new NoSuchElementException("Queue underflow");
       T item = first.item;
       first = first.next;
       N--;
       if (isEmpty()) last = null;
       return item;
   }

   /**
   * Return string representation.
   */
   public String toString() {
       StringBuilder s = new StringBuilder();
       for (T item : this)
           s.append(item + " ");
       return s.toString();
   }

   // check internal invariants
   private static <T> boolean check(Queue<T> that) {
       int N = that.N;
       Queue.Node<T> first = that.first;
       Queue.Node<T> last = that.last;
       if (N == 0) {
           if (first != null) return false;
           if (last != null) return false;
       }
       else if (N == 1) {
           if (first == null || last == null) return false;
           if (first != last) return false;
           if (first.next != null) return false;
       }
       else {
           if (first == last) return false;
           if (first.next == null) return false;
           if (last.next != null) return false;

           // check internal consistency of instance variable N
           int numberOfNodes = 0;
           for (Queue.Node<T> x = first; x != null; x = x.next) {
               numberOfNodes++;
           }
           if (numberOfNodes != N) return false;

           // check internal consistency of instance variable last
           Queue.Node<T> lastNode = first;
           while (lastNode.next != null) {
               lastNode = lastNode.next;
           }
           if (last != lastNode) return false;
       }

       return true;
   }


   /**
   * Return an iterator that iterates over the items on the queue in FIFO order.
   */
   public Iterator<T> iterator() {
       return new ListIterator();
   }

   // an iterator, doesn't implement remove() since it's optional
   private class ListIterator implements Iterator<T> {
       private Node<T> current = first;

       public boolean hasNext() { return current != null; }
       public void remove() { throw new UnsupportedOperationException(); }

       public T next() {
           if (!hasNext()) throw new NoSuchElementException();
           T item = current.item;
           current = current.next;
           return item;
       }
   }

   public void toGraphviz(String filename) {
       GraphvizBuilder gb = new GraphvizBuilder ();
       toGraphviz (gb, null, first);
       gb.toFile (filename, "rankdir="LR"");
   }
   private void toGraphviz (GraphvizBuilder gb, Node<T> prev, Node<T> n) {
       if (n == null) { gb.addNullEdge (prev); return; }
       gb.addLabeledNode (n, n.item.toString ());
       if (prev != null) gb.addEdge (prev, n);
       toGraphviz (gb, n, n.next);
   }

   /**
   * A test client.
   */
   public static void main(String[] args) {
       StdIn.fromString ("to be or not to - be - - that - - - is");
       Queue<String> q = new Queue<>();
       int count = 0;
       q.toGraphviz ("queue" + count + ".png"); count++;
       while (!StdIn.isEmpty()) {
           String item = StdIn.readString();
           if (!item.equals("-")) q.enqueue(item);
           else if (!q.isEmpty()) StdOut.print(q.dequeue() + " ");
           q.toGraphviz ("queue" + count + ".png"); count++;
       }
       StdOut.println("(" + q.size() + " left on queue)");
   }
}

TestFinalAnswer.java:

package finalanswer;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Random;

import stdlib.StdIn;

import stdlib.StdOut;

public class TestFinalAnswer {

               public static <Item extends Comparable<? super Item>> boolean isSorted(Item[] a) {

                              for (int i = 0; i < a.length-1; i++) {

                                             if (a[i].compareTo(a[i+1]) > 0) return false;

                              }

                              return true;

               }

               public static void main(String[] args) {

                              StdOut.println("*** " + FinalAnswer.yourName() + " ***");

                              StdOut.println();

                              Integer[] array = new Integer[12];

                              Random r = new Random();

                              for (int i = 0; i < array.length; i++) {

                                             array[i] = r.nextInt(1000);

                              }

                              StdOut.println("Array before sorting: " + Arrays.toString(array));

                              FinalAnswer.minpqSort(array);

                              StdOut.println("Array after sorting: " + Arrays.toString(array));

                              StdOut.println("Array is sorted: " + isSorted(array));

                              StdOut.println();

                              Queue<String> queue = new Queue<String>();

                              queue.enqueue("first");

                              queue.enqueue("second");

                              queue.enqueue("third");

                              queue.enqueue("fourth");

                              StdOut.println("Queue before reversing: " + queue);

                              FinalAnswer.reverseQueue(queue);

                              StdOut.println("Queue after reversing: " + queue);

                              StdOut.println();

                              double[] frequencies = {110.0, 110.0*1.224, 110.0*1.224*1.224};

                              ArrayList<Chord> risingChords = FinalAnswer.createRisingChordList(0.2, frequencies, 10);

                              for (Chord risingChord: risingChords) {

                                             StdOut.println("Playing: " + risingChord);

                                             risingChord.play();

                              }

                              StdOut.println();

                              ArrayList<CTATrain> ctaTrains = new ArrayList<CTATrain>();

                              StdIn.fromFile("data/CTAdata.txt");

                              while (!StdIn.isEmpty()) {

                                             int runNumber = StdIn.readInt();

                                             String lineColor = StdIn.readString();

                                             String nextStation = StdIn.readString();

                                             String arrivalTime = StdIn.readString();

                                             ctaTrains.add(new CTATrain(runNumber, lineColor, nextStation, arrivalTime));

                              }

                              StdOut.println("--- Trains before sorting ---");

                              for (CTATrain ctaTrain: ctaTrains) {

                                             StdOut.println(ctaTrain);

                              }

                              StdOut.println();

                              ctaTrains.sort(null);

                              StdOut.println("--- Trains after sorting by run number ---");

                              for (CTATrain ctaTrain: ctaTrains) {

                                             StdOut.println(ctaTrain);

                              }

                              StdOut.println();

                              ctaTrains.sort((CTATrain t1, CTATrain t2) -> (t1.getArrivalTime().compareTo(t2.getArrivalTime())));

                              StdOut.println("--- Trains after sorting by arrival time ---");

                              for (CTATrain ctaTrain: ctaTrains) {

                                             StdOut.println(ctaTrain);

                              }

                              StdOut.println();

                              StdOut.println("=== " + FinalAnswer.yourName() + " ===");

               }

}

Instructions 1. Eclipse, create a package called finalanswer. Copy and place into the package the file TestFinalAnswer.java provided below n the package, create a class called FinalAnswer. All of the static methods you are asked to write will go in this class

Explanation / Answer


Answered as per question :-

package finalanswer;

import java.util.Stack;

public class FinalAnswer {

  

   public static <T> Queue<T>reverseQueue(Queue<T> queue){

      

       Stack<T> stack = new Stack<T>();

       while(!queue.isEmpty()){

           stack.push(queue.dequeue());

       }

      

       while(!stack.isEmpty()){

           queue.enqueue(stack.pop());

       }

      

       return queue;

      

      

   }

}
====================
Test and let me know if there is any concern.

Thanks