impl: custom linked list size and add

This commit is contained in:
Václav Přibík
2025-10-16 15:09:24 +02:00
parent 6d829c47b9
commit 21ac9f5405

View File

@@ -0,0 +1,84 @@
package appointmentplanner.customlist;
import java.util.Iterator;
import appointmentplanner.customlist.api.CustomLinkedList;
public class CustomLinkedListImpl<T> implements CustomLinkedList<T> {
CustomLinkedListNode<T> head = null;
@Override
public Iterator<T> iterator() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'iterator'");
}
@Override
public void add(T item) {
CustomLinkedListNode<T> newNode = new CustomLinkedListNode<>(item);
CustomLinkedListNode<T> 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<T> 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);
}
}