package samplelist; public class LinkedList { Node sentinelNode; Node cursor = null; // initialize the sentinel node { sentinelNode = new Node(""); sentinelNode.next = sentinelNode; sentinelNode.prev = sentinelNode; } // helper function that inserts a new node after the // specified node void insertAfter(Node n, String value) { Node nextNode = n.next; Node newNode = new Node(value); // re-link items in the forward direction n.next = newNode; newNode.next = nextNode; // re-link items in the reverse direction newNode.prev = n; nextNode.prev = newNode; } public void append(String value) { insertAfter(sentinelNode.prev, value); } public void prepend(String value) { insertAfter(sentinelNode, value); } public String get() { return cursor.value; } public boolean endOfList() { return cursor == sentinelNode; } public void first() { cursor = sentinelNode.next; } public void last() { cursor = sentinelNode.prev; } public void next() { cursor = cursor.next; } public void prev() { cursor = cursor.prev; } }