diff --git a/src/List.java b/src/List.java index 68345d6..6a8e614 100644 --- a/src/List.java +++ b/src/List.java @@ -4,6 +4,11 @@ private T item; private Node next; + public Node(T item, Node next) { + this.item = item; + this.next = next; + } + public Node(T item) { this.item = item; this.next = null; @@ -15,12 +20,20 @@ public void addAt(int pos, T elem) { if (root == null) { root = new Node(elem); - } else { + } else if (pos == 0) { + root = new Node(elem, root); + } else if (pos > 0) { Node walker = root; - while (walker.next != null) { + Node prev = null; + + while (walker != null && pos > 0) { + pos--; + prev = walker; walker = walker.next; } - walker.next = new Node(elem); + + walker = new Node(elem, walker); + prev.next = walker; } }