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;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.