Implement the static method merge in MergeQueuesjava that ta

Implement the static method merge() in MergeQueues.java that takes two queues of sorted
items as arguments and returns a queue that results from merging the queues into sorted order. Your implementation must
be linear and must not alter the input queues.

Result:

$ java MergeQueues

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Code:

import edu.princeton.cs.algs4.Queue;
import edu.princeton.cs.algs4.StdOut;
import edu.princeton.cs.algs4.StdRandom;
import java.util.Iterator;


public class MergeQueues {
// Return true if v is less than w and false otherwise.
private static boolean less(Comparable v, Comparable w) {
return v.compareTo(w) < 0;
}

// Merge and return the two sorted queues as a single sorted queue.
private static Queue<Comparable> merge(Queue<Comparable> q1, Queue<Comparable> q2) {
.......................................................................................... <- I have to write this
}

// Test client. [DO NOT EDIT]
public static void main(String[] args) {
String[] a = {\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\",
\"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\",
\"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\"};
Queue<Comparable> q1 = new Queue<Comparable>();
Queue<Comparable> q2 = new Queue<Comparable>();
for (String s : a) {
if (StdRandom.bernoulli(0.5)) {
q1.enqueue(s);
}
else {
q2.enqueue(s);
}
}
int s1 = q1.size(), s2 = q2.size();
StdOut.println(merge(q1, q2));
assert q1.size() == s1 && q2.size() == s2;
}
}

http://introcs.cs.princeton.edu/java/43stack/Queue.java.html Here is the Queue class

Solution

int e1 = q1.dequeue(); int e2 = q2.dequeue(); while (true) { if (e1 < e2) { merged.enqueue(e1); if (q1.isEmpty()) { // add remaining q2 elements while (!q2.isEmpty()) { merged.enqueue(q2.dequeue()); } break; } // take another element from q1 e1 = q1.dequeue(); } else { merged.enqueue(e2); if (q2.isEmpty()) { // add remaining q1 elements while (!q1.isEmpty()) { merged.enqueue(q1.dequeue()); } break; } // take another element from q2 e2 = q2.dequeue(); } }
Implement the static method merge() in MergeQueues.java that takes two queues of sorted items as arguments and returns a queue that results from merging the que

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site