
// Double Linked List Node
public class ListNode {
    ListNode _next;
    ListNode _previous;
    
    ListNode( ListNode previous, ListNode next ) {
	_previous = previous;
	_next = next;
    }
    
    ListNode() {
	_previous = this;
	_next = this;
    }
    
    public ListNode getNext() {
	return _next;
    }
    
    public ListNode getPrevious() {
	return _previous;
    }
    
    public void setNext( ListNode next ) {
	_next = next;
    }
    
    public void setPrevious( ListNode previous ) {
	_previous = previous;
    }
    
    public void unlink() {
	_previous._next = _next;
	_next._previous = _previous;
	_previous = this;
	_next = this;
    }

    public void addNext( ListNode node ) {
	node._next = _next;
	node._previous = this;
	_next = node;
	node._next._previous = node;
    }
};


