I need help with this java program, i have attached the required program with it
ID: 3852539 • Letter: I
Question
I need help with this java program, i have attached the required program with it, and all the necessary files can be downloaded here ( http://s000.tinyupload.com/index.php?file_id=47115722665424342516 )
A “dequeue” is like a queue but it also allows you to insert into the front of the queue and to remove from the rear of the queue. Create an array-based Dequeue class.
I provide Driver program.
//Sample Output
page 376 #18
enqueue 23 myDequeue: 23
enqueue 40 myDequeue: 23 40
addFront50 myDequeue: 50 23 40
addFront20 myDequeue: 20 50 23 40
dequeue myDequeue : 50 23 40
enqueue 8 myDequeue : 50 23 40 8
removeRear myDequeue: 50 23 40
removeRear myDequeue: 50 23
dequeue myDequeue : 23
removeRear myDequeue:
//End of Sample Output
assuming that DEFCAP is 5
content of Array queue will be
page 376 #18
enqueue 23 myDequeue: DEFCAP=5 front=0 rear=0 23 null null null null
enqueue 40 myDequeue: DEFCAP=5 front=0 rear=1 23 40 null null null
addFront50 myDequeue: DEFCAP=5 front=4 rear=1 23 40 null null 50
addFront20 myDequeue: DEFCAP=5 front=3 rear=1 23 40 null 20 50
dequeue myDequeue : DEFCAP=5 front=4 rear=1 23 40 null null 50
enqueue 8 myDequeue : DEFCAP=5 front=4 rear=2 23 40 8 null 50
removeRear myDequeue: DEFCAP=5 front=4 rear=1 23 40 null null 50
removeRear myDequeue: DEFCAP=5 front=4 rear=0 23 null null null 50
dequeue myDequeue : DEFCAP=5 front=0 rear=0 23 null null null null
removeRear myDequeue: DEFCAP=5 front=0 rear=4 null null null null null
Get necessary programs from D2L Content/Extra Files / sourceCode (bookFilez.zip),
see folder ch05/ queues, and folder support
drive.java
import ch05.queues.*;
import support.*;
public class Driver
{
public static void main(String[] args)
{ //page 376 #18
System.out.println("page 376 #18 ");
Dequeue myDequeue;
myDequeue = new Dequeue();
myDequeue.enqueue(23);
System.out.print("enqueue 23 myDequeue: ");
System.out.println(myDequeue);
myDequeue.enqueue(40);
System.out.print("enqueue 40 myDequeue: ");
System.out.println(myDequeue);
myDequeue.addFront(50);
System.out.print("addFront50 myDequeue: ");
System.out.println(myDequeue);
myDequeue.addFront(20);
System.out.print("addFront20 myDequeue: ");
System.out.println(myDequeue);
myDequeue.dequeue();
System.out.print("dequeue myDequeue : ");
System.out.println(myDequeue);
myDequeue.enqueue(8);
System.out.print("enqueue 8 myDequeue : ");
System.out.println(myDequeue);
myDequeue.removeRear();
System.out.print("removeRear myDequeue: ");
System.out.println(myDequeue);
myDequeue.removeRear();
System.out.print("removeRear myDequeue: ");
System.out.println(myDequeue);
myDequeue.dequeue();
System.out.print("dequeue myDequeue : ");
System.out.println(myDequeue);
myDequeue.removeRear();
System.out.print("removeRear myDequeue: ");
System.out.println(myDequeue);
}
}
Explanation / Answer
You did not provide support.LLNode class
Every class in the given zip folder is compiling successfully except LinkedUnbndQueue class which is using LLNode class.
Now Iam creating Dequeue class using Arrays
Note:Iam not using any of the classes except QueueUnderflowException and QueueOverflowException you have given in zip file. Because they will not satisfy our need to create a different queue that can able to insert elements at front and remove elements at rear.
Dequeue.java
public class Dequeue{
int queue[];
int front=0,rear=0;
int size;
Dequeue(){
this.size = 10;//default dequeue size
queue = new int[10+1];
}
public void enqueue(int element){
if(!isFull()){
queue[rear] = element;
rear = (rear+1)%(size+1);
}
else throw new QueueOverflowException("Dequeue is FULL!!!");
}
public void dequeue(){
if(!isEmpty()){
front = (front+1)%(size+1);
}
else throw new QueueUnderflowException("Dequeue is EMPTY!!!");
}
public void addFront(int element){
if(!isFull()){
front--;
if(front<0)
front = size;
queue[front] = element;
}
else throw new QueueOverflowException("Dequeue is FULL!!!");
}
public void removeRear(){
if(!isEmpty()){
rear--;
if(rear<0)
rear = size;
}
else throw new QueueUnderflowException("Dequeue is EMPTY!!!");
}
public boolean isFull(){
return front==((rear+1)%(size+1));
}
public boolean isEmpty(){
return front==rear;
}
public String toString(){
String str = " ";
int tempRear=rear;
if(rear<front)
tempRear = rear+size+1;
int no_of_ele_in_queue = tempRear-front;
int index = front;
for(int i=0;i<no_of_ele_in_queue;i++){
str = str+queue[index]+" ";
index = (index+1)%(size+1);
}
return str;
}
}