Queue.java: import stdlib.*; import java.util.Iterator; import java.util.NoSuchE
ID: 3846981 • Letter: Q
Question
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() + " ===");
}
}
Need help with a Java problem: Instructions 1. In Eclipse, create a package called finalanswer. 2. Copy and place into the package the file TestFinalAnswer.java provided below. 3. In the package, create a class called FinalAnswer. All of the static methods you are asked to write will go in this class. FIFO Queue Define in the FinalAnswer class a generic method called reverse eue with the signature public static Queue reversegueue (Queue Item> queue) lt modifies its parameter so that, when it returns, the values in the queue are reversed. For example, if the queue q1 contains the integer values 13, 15, 9, 10, and 25 (in that order), the following call: q2 eue (q1) reverse will result in q2 having the values 25, 10, 9, 15, 13 (in that order). Use the queue class provided below Testing your code The Test FinalAnswer program provided below will test every one of your methods and classes. It produces (a lot) of output and it will be obvious whether your code works.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
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.