DLL Operation: Get

Suppose we have a DLL with $n$ elements (nodes), and we want to get the data stored in the $k^{th}$ node (at index $k-1$).

Exercise Complete the implementation of the get method which returns data stored at a given index.

public T get(int index) {
  return null; // TODO Implement me!
}

Hint: you cannot directly jump to $K^{th}$ node. You need to start from the head or the tail and follow the pointers to get there!

For this exercise, traverse the list from the tail pointer. Assume there is a numElements attribute that correctly represents the number of nodes in this DLL.

Solution
public T get(int index) {
  Node<T> target = tail;
  for (int i = numElements - 1; i > index; i--) {
    target = target.prev;
  }
  return target.data;
}

Caution: the implementation above fails to account for an edge case!