rendered paste bodypublic class ListDL { private NodeDL first; private NodeDL last; private int count; public ListDL(){ first = null; last = null; count = 0; } public NodeDL getfirst(){ return first; } public NodeDL getlast(){ return last; } public boolean isEmpty(){ return (first == null); } public void insert_before(NodeDL node, NodeDL node2){ node.next = node2; node.prev = node2.prev; node2.prev = node; if(node.prev == null){ first = node; } else{ node.prev.next = node; } count++; } public void insert_after(NodeDL node2, NodeDL node){ node.prev = node2; node.next = node2.next; node2.next = node; if(node.next == null){ last = node; } else{ node.next.prev = node; } count++; } public void insert_by_rank(NodeDL node){ NodeDL node2 = first; if(node2 == null){ insert_last(node); } else{ /*if(node.value.time < node2.value.time){ insert_before(node,node2); } else{ node2 = node2.next; } */ } } public void remove_specific(NodeDL node){ if(node == null){ return; } if(node.prev == null){ first = node.next; } else{ node.prev.next = node.next; } if(node.next == null){ last = node.prev; } else{ node.next.prev = node.prev; } count--; } public NodeDL remove_first(){ NodeDL node = first; if(node != null){ remove_specific(node); } return node; } public NodeDL remove_last(){ NodeDL node = last; if(node != null){ remove_specific(node); } return node; } public void insert_first (Object o) { NodeDL newNode = new NodeDL(o, null, null); newNode.setNext(first); if (isEmpty()) last = newNode; else first.setPrev(newNode); first = newNode; } public void insert_last (Object o) { NodeDL newNode = new NodeDL(o, null, null); newNode.setPrev(last); if (isEmpty()) first = newNode; else last.setNext(newNode); last = newNode; } public String toString(){ NodeDL node = first; String str = ""; while(node != null){ str += " " + node.value; node = node.next; //node = node.getNext(); } return str; }}