Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Java Priority Queues. Please help me :(. I don't know why the index keeps starts at index 1 and it adds 1 to the heap.

Java Priority Queues.

Please help me :(. I don't know why the index keeps starts at index 1 and it adds 1 to the heap.

Add a toString() method to class Task, so you can display the instance variables of each task object. This method should display both instance variables in a proper format.

The PriorityQueue task contains a heap, which is essentially an array. The problem in this implementation is that all arrays start at index 0. This implementation incorrectly adds 1 more to the heap and starts at index 1 instead of index 0. Fix this error so the heap starts correctly at index 0.

Add a show() method to the PriorityQueue which will display each of the active tasks on the heap.

Add an option 7 to the PriorityQueueTest, which will call the show() method. Again, this method should only display active tasks on the heap, showing them in proper priority order.

package priorityqueuetest; /** ** Java Program to implement Priority Queue **/ import java.util.Scanner; /** class Task **/ class Task { String job; int priority; /** Constructor **/ public Task(String job, int priority) { this.job = job; this.priority = priority; } } /** Class PriorityQueue **/ class PriorityQueue { private Task[] heap; private int heapSize, capacity; /** Constructor **/ public PriorityQueue( int capacity ) { this.capacity = capacity+1; heap = new Task[this.capacity]; heapSize = 0; } /** function to clear **/ public void clear() { heap = new Task[capacity]; heapSize = 0; } /** function to check if empty **/ public boolean isEmpty() { return heapSize == 0; } /** function to check if full **/ public boolean isFull() { return heapSize == capacity - 1; } /** function to get Size **/ public int size() { return heapSize; } /** function to insert task **/ public void insert( String job, int priority ) { Task newJob = new Task( job, priority ); heap[++heapSize] = newJob; int pos = heapSize; while (( pos != 1 ) && ( newJob.priority > heap[pos/2].priority )) { heap[pos] = heap[pos/2]; pos /=2; } heap[pos] = newJob; } /** function to remove task **/ public Task remove() { int parent, child; Task item, temp; if (isEmpty() ) { System.out.println("Heap is empty"); return null; } item = heap[1]; temp = heap[heapSize--]; parent = 1; child = 2; while ( child <= heapSize ) { if (( child < heapSize ) && ( heap[child].priority < heap[child+1].priority )) { child++; } if ( temp.priority >= heap[child].priority ) { break; } heap[parent] = heap[child]; parent = child; child *= 2; } heap[parent] = temp; return item; } } /** Class PriorityQueueTest **/ public class PriorityQueueTest { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Priority Queue Test "); System.out.println("Enter Desired Size of Priority Queue: "); PriorityQueue pq = new PriorityQueue(scan.nextInt() ); int choice; /* Perform Priority Queue operations */ do { System.out.println( "Priority Queue Operations" ); System.out.println( "1. insert" ); System.out.println( "2. remove" ); System.out.println( "3. check empty" ); System.out.println( "4. check full" ); System.out.println( "5. clear" ); System.out.println( "6. size" ); System.out.println( "8. quit" ); System.out.print( "Choice: " ); choice = scan.nextInt(); switch ( choice ) { case 1 : System.out.println("Enter job name and priority"); pq.insert(scan.next(), scan.nextInt() ); break; case 2 : System.out.println(" Job removed "+ pq.remove()); break; case 3 : System.out.println(" Empty Status : "+ pq.isEmpty() ); break; case 4 : System.out.println(" Full Status : "+ pq.isFull() ); break; case 5 : System.out.println(" Priority Queue Cleared"); pq.clear(); break; case 6 : System.out.println(" Size = "+ pq.size() ); break; case 8: System.out.println( "Goodbye" ); break; default : System.out.println("Wrong Entry "); break; } } while ( choice != 8 ); } } 

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Spatial Database Systems Design Implementation And Project Management

Authors: Albert K.W. Yeung, G. Brent Hall

1st Edition

1402053932, 978-1402053931

More Books

Students also viewed these Databases questions

Question

Know the three main dimensions of the service environment.

Answered: 1 week ago