The LinkedDeque class implements a doubly-linked deque (dequeue) data structure. It contains methods for checking if the deque is empty, getting the size, adding/removing elements from the front and back of the deque, and checking for null elements. The class uses first and last nodes and a size variable to track the front, back, and count of elements in the deque.
Graduate Outcomes Presentation Slides - English (v3).pptx
public static class LinkedDequeT implements DequeADTT{ priv.pdf
1. public static class LinkedDeque implements DequeADT{
private int size;
private Node first;
private Node last;
public LinkedDeque() {
}
// checking empty method or not
public boolean isEmpty() {
return first == null;
}
// checking size
public int size() {
return size;
}
// enqueing front
public void enqueueFront(T num) {
checkNull(num);
Node tempNode = new Node();
tempNode.num = num;
if (first != null) { // check root is not null
tempNode.next = first;
first.previous = tempNode;
}
first = tempNode;
if (last == null) last = first;
size++;
}
// removing front
public Item dequeueFront() {
CheckEmpty();
2. Node oldFirst = first;
first = first.next;
if (first == null)
last = null;
else
first.previous = null;
size--;
return oldFirst.item;
}
// inseeting element at end of list
public void enqueueBack(Item item) {
checkNull(item);
Node newLast = new Node();
newLast.item = item;
if (last != null) {
newLast.previous = last;
last.next = newLast;
}
last = newLast;
if (first == null) first = last;
size++;
}
// removing element from end of the list
public Item dequeueBack() {
CheckEmpty();
Node oldLast = last;
last = oldLast.previous;
if (last == null)
first = null;
else
last.next = null;
size--;
return oldLast.item;
}
3. private void CheckEmpty() {
if (first == null)
throw new NoSuchElementException();
}
private void checkNull(Item item) {
if (item == null)
throw new NullPointerException();
}
}
Solution
public static class LinkedDeque implements DequeADT{
private int size;
private Node first;
private Node last;
public LinkedDeque() {
}
// checking empty method or not
public boolean isEmpty() {
return first == null;
}
// checking size
public int size() {
return size;
}
// enqueing front
public void enqueueFront(T num) {
checkNull(num);
Node tempNode = new Node();
tempNode.num = num;
if (first != null) { // check root is not null
4. tempNode.next = first;
first.previous = tempNode;
}
first = tempNode;
if (last == null) last = first;
size++;
}
// removing front
public Item dequeueFront() {
CheckEmpty();
Node oldFirst = first;
first = first.next;
if (first == null)
last = null;
else
first.previous = null;
size--;
return oldFirst.item;
}
// inseeting element at end of list
public void enqueueBack(Item item) {
checkNull(item);
Node newLast = new Node();
newLast.item = item;
if (last != null) {
newLast.previous = last;
last.next = newLast;
}
last = newLast;
if (first == null) first = last;
size++;
}
// removing element from end of the list
5. public Item dequeueBack() {
CheckEmpty();
Node oldLast = last;
last = oldLast.previous;
if (last == null)
first = null;
else
last.next = null;
size--;
return oldLast.item;
}
private void CheckEmpty() {
if (first == null)
throw new NoSuchElementException();
}
private void checkNull(Item item) {
if (item == null)
throw new NullPointerException();
}
}