diff --git a/src/List.java b/src/List.java index a43b07b..30f87e4 100644 --- a/src/List.java +++ b/src/List.java @@ -24,7 +24,7 @@ private Node root; /** - * Add an element at a specific position starting at 0. + * Add an element of any position. Negative means adding it to the end. */ @Override public void addAt(int pos, T elem) { @@ -32,14 +32,23 @@ root = new Node(elem); } else if (pos == 0) { root = new Node(elem, root); - } else if (pos > 0) { + } else { Node walker = root; Node prev = null; - while (walker != null && pos > 0) { - pos--; - prev = walker; - walker = walker.next; + // If position is -1, then loop until the end of the list. + if (pos == -1) { + while (walker != null) { + prev = walker; + walker = walker.next; + } + // If pos is above 0, loop until it's done. + } else if (pos > 0) { + while (walker != null && (pos > 0)) { + pos--; + prev = walker; + walker = walker.next; + } } walker = new Node(elem, walker); @@ -145,7 +154,7 @@ Node walker = root; for (int i = 0; i < size; ++i) { - list[i] = (String)walker.item; + list[i] = (String) walker.item; walker = walker.next; }