Question: In java, the goal is to complete the remove and addbetween methods. These are retaining to doubly linked lists. Insturctions can be found in code

In java, the goal is to complete the "remove" and "addbetween" methods. These are retaining to doubly linked lists. Insturctions can be found in code provided
The output should be:
Test MyDoublyLinkedList:.....
(1,2,3,4,5)
(-2,-1,1,2,3,4,5)
(-2,100,-1,1,2,3,4,5)
(100,-1,1,2,3,4,5)
(100,-1,1,2,3,4)
public class MyDoublyLinkedList {
//--------------------- Data field
public Node header; // parent of head, dummy node
public Node trailer; // child of tail, dummy node
public int size =0;
//--------------------- Method field
public MyDoublyLinkedList(){
header = new Node<>(null, null, null);
trailer = new Node<>(null, header, null); // header <-- trailer
header.setNext(trailer); // header --> trailer
}
public int size(){ return size; }
public boolean isEmpty(){ return size ==0; }
public E first(){
if (isEmpty()) return null;
return header.getNext().getElement();
}
public E last(){
if (isEmpty()) return null;
return trailer.getPrev().getElement();
}
public void addFirst(E e){
addBetween(e, header, header.getNext());
}
public void addLast(E e){
addBetween(e, trailer.getPrev(), trailer);
}
public E removeFirst(){
if (isEmpty()) return null;
return remove(header.getNext());
}
public E removeLast(){
if (isEmpty()) return null;
return remove(trailer.getPrev());
}
private void addBetween(E e, Node predecessor, Node successor){
// Complete this block
}
private E remove(Node node){
// Complete this block
}
public String toString(){
StringBuilder sb = new StringBuilder("(");
Node walk = header.getNext();
while (walk != trailer){
sb.append(walk.getElement());
walk = walk.getNext();
if (walk != trailer)
sb.append(",");
}
sb.append(")");
return sb.toString();
}
public static void main(String[] args){
System.out.println("Test MyDoublyLinkedList:.....");
MyDoublyLinkedList list = new MyDoublyLinkedList();
list.addLast(1);
list.addLast(2);
list.addLast(3);
list.addLast(4);
list.addLast(5);
System.out.println(list.toString()); //(1,2,3,4,5)
list.addFirst(-1);
list.addFirst(-2);
System.out.println(list.toString()); //(-2,-1,1,2,3,4,5)
list.addBetween(100, list.header.getNext(), list.header.getNext().getNext());
System.out.println(list.toString());
list.removeFirst();
System.out.println(list.toString());
list.removeLast();
System.out.println(list.toString());
}
}
//----------- Node class -----------
class Node {
private E element;
private Node prev;
private Node next;
public Node(E e, Node p, Node n){
element = e;
prev = p;
next = n;
}
public E getElement(){ return element; }
public Node getPrev(){ return prev; }
public Node getNext(){ return next; }
public void setPrev(Node p){ prev = p; }
public void setNext(Node n){ next = n; }
}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!