diff --git a/assignment/src/main/java/appointmentplanner/customlist/CustomLinkedListImpl.java b/assignment/src/main/java/appointmentplanner/customlist/CustomLinkedListImpl.java new file mode 100644 index 0000000..ef2ed46 --- /dev/null +++ b/assignment/src/main/java/appointmentplanner/customlist/CustomLinkedListImpl.java @@ -0,0 +1,84 @@ +package appointmentplanner.customlist; + +import java.util.Iterator; + +import appointmentplanner.customlist.api.CustomLinkedList; + +public class CustomLinkedListImpl implements CustomLinkedList { + + CustomLinkedListNode head = null; + + @Override + public Iterator iterator() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'iterator'"); + } + + @Override + public void add(T item) { + CustomLinkedListNode newNode = new CustomLinkedListNode<>(item); + + CustomLinkedListNode oldHead = head; + + head = newNode; + + if (oldHead != null) { + head.setNext(oldHead); + } + } + + @Override + public void remove(T item) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'remove'"); + } + + @Override + public void insertAfter(T reference, T item) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'insertAfter'"); + } + + @Override + public void insertBefore(T reference, T item) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'insertBefore'"); + } + + @Override + public T getAfter(T reference) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'getAfter'"); + } + + @Override + public T getBefore(T reference) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'getBefore'"); + } + + @Override + public boolean contains(T item) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'contains'"); + } + + private int recursiveSizeCalc(CustomLinkedListNode node, int count) { + if (node == null) { + return 0; + } + + if (node.getNext() == null) { + return count; + } + + return recursiveSizeCalc(node.getNext(), count + 1); + + } + + @Override + public int size() { + return recursiveSizeCalc(this.head, 1); + } + +}