Question: / / = = = = = = = = = = = = = = = = = = = = = = =

//=============================================== Requirements
//
// Please complete MyDoublyLinkedList class.
//
// 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)
//
//=============================================== Note
//
//1. DO NOT DELETE ANY COMMENT!!!
//2. Modify the file name to "MyDoublyLinkedList.java" before compiling it.
//
//===============================================
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; }
}
//----------- end of Node class -----------

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!