public void addToStack(T data) {
    ListElement<T> element = null;
    if (list.isEmpty()) {
      element = new ListElement<T>(data, null, null);
    } else {
      element = new ListElement<T>(data, head, null);
    }
    list.add(0, element);

    if (list.size() > maxSize) {
      list.remove(maxSize);
      element.delete();
    }

    head = element.getHead();
    tail = element.getTail();
  }