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

public class CircularDoublyLinkedDeque<T> implements DequeInterface<T> { private

ID: 3756982 • Letter: P

Question

public class CircularDoublyLinkedDeque<T> implements DequeInterface<T> {

private DLNode firstNode; // References node for front of deque

public CircularDoublyLinkedDeque() {

firstNode = null;

} // end default constructor

public void addToBack(T newEntry) {

DLNode newNode = new DLNode (newEntry);

if(isEmpty() == true) {

firstNode = newNode;

firstNode.setNextNode(newNode);

firstNode.setPreviousNode(newNode);

}

else {

newNode.setNextNode(firstNode);

newNode.setPreviousNode(firstNode.getPreviousNode());

firstNode.setPreviousNode(newNode);

(newNode.getPreviousNode()).setNextNode(newNode);

}

//firstNode.getPreviousNode() = newNode;

}

public void addToFront(T newEntry) {

DLNode newNode = new DLNode (newEntry);

if(isEmpty() == true) {

firstNode = newNode;

firstNode.setNextNode(newNode);

firstNode.setPreviousNode(newNode);

}

else {

newNode.setNextNode(firstNode);

newNode.setPreviousNode(firstNode.getPreviousNode());

firstNode.setPreviousNode(newNode);

(newNode.getPreviousNode()).setNextNode(newNode);

}

firstNode = newNode;

}

public T getFront() {

if(firstNode == null) {

throw new EmptyQueueException();

}

else {

T getFront = firstNode.getData();

return getFront;

}

}

public T getBack() {

if(firstNode == null) {

throw new EmptyQueueException();

}

else {

T getBack = firstNode.getPreviousNode().getData();

return getBack;

}

}

public T removeFront() {

T removeFront = null;

if(isEmpty() == false) {

removeFront = firstNode.getData();

firstNode = firstNode.getNextNode();

if(firstNode == null) {

firstNode.getPreviousNode().getPreviousNode().setData(null);

}

else {

firstNode.setPreviousNode(null);

}

}

else {

throw new EmptyQueueException();

}

return removeFront;

}

public T removeBack() {

T removeBack = null;

if(isEmpty() == false) {

removeBack = firstNode.getPreviousNode().getData();

firstNode.setPreviousNode(firstNode.getPreviousNode().getPreviousNode());

}

else {

throw new EmptyQueueException();

}

return removeBack;

}

public void clear() {

while(isEmpty() != true) {

firstNode = null;

}

}

public boolean isEmpty() {

boolean isEmpty;

if(firstNode == null) {

isEmpty = true;

}

else {

isEmpty = false;

}

return isEmpty;

}

private class DLNode {

private T data; // Deque entry

private DLNode next; // Link to next node

private DLNode previous; // Link to previous node

private DLNode() {

this(null, null, null);

} // end default constructor

private DLNode(T dataPortion) {

this(null, dataPortion, null);

} // end constructor

private DLNode(DLNode previousNode, T dataPortion, DLNode nextNode) {

data = dataPortion;

next = nextNode;

previous = previousNode;

} // end constructor

private T getData() {

return data;

} // end getData

private void setData(T newData) {

data = newData;

} // end setData

private DLNode getNextNode() {

return next;

} // end getNextNode

private void setNextNode(DLNode nextNode) {

next = nextNode;

} // end setNextNode

private DLNode getPreviousNode() {

return previous;

} // end getPreviousNode

private void setPreviousNode(DLNode previousNode) {

previous = previousNode;

} // end setPreviousNode

} // end DLNode

} // end CircularDoublyLinkedDeque

Help with my remvoe from front method

Explanation / Answer

Please find the code below.

CODE

====================

public T removeFront() {

       T removeFront = null;

       if(isEmpty() == false) {

           removeFront = firstNode.getData();

           firstNode = firstNode.getNextNode();

           if(firstNode != null) {

               firstNode.setPreviousNode(firstNode.getPreviousNode());

               firstNode.getPreviousNode().setNextNode(firstNode);

           }

           else {

               firstNode.setPreviousNode(null);

               firstNode = null;

           }

       }

       else {

           throw new EmptyQueueException();

       }

       return removeFront;

   }