impl: cll insert before & after

This commit is contained in:
Václav Přibík
2025-10-18 11:43:50 +02:00
parent b315a8ea4c
commit 3330e31bcf

View File

@@ -114,20 +114,28 @@ public class CustomLinkedListImpl<T> implements CustomLinkedList<T> {
@Override @Override
public void insertAfter(T reference, T item) { public void insertAfter(T reference, T item) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'insertAfter'"); if (head.getItem().equals(reference)) {
add(item);
return;
}
CustomLinkedListNode<T> nodeBefore = traverseFind(head, reference, ItemPosition.BEFORE);
CustomLinkedListNode<T> nodeToInsert = new CustomLinkedListNode<>(nodeBefore.getNext(), item);
nodeBefore.setNext(nodeToInsert);
} }
@Override @Override
public void insertBefore(T reference, T item) { public void insertBefore(T reference, T item) {
// TODO Auto-generated method stub CustomLinkedListNode<T> referenceNode = traverseFind(head, reference, ItemPosition.CURRENT);
throw new UnsupportedOperationException("Unimplemented method 'insertBefore'"); CustomLinkedListNode<T> nodeToInsert = new CustomLinkedListNode<>(referenceNode.getNext(), item);
referenceNode.setNext(nodeToInsert);
} }
@Override @Override
public T getAfter(T reference) { public T getAfter(T reference) {
// head represents the last inserted item thus making enrire list in reverse // head represents the last inserted item thus making entire list in reverse
// order // order
CustomLinkedListNode<T> node = traverseFind(head, reference, ItemPosition.BEFORE); CustomLinkedListNode<T> node = traverseFind(head, reference, ItemPosition.BEFORE);
return node == null ? null : node.getItem(); return node == null ? null : node.getItem();
@@ -136,7 +144,7 @@ public class CustomLinkedListImpl<T> implements CustomLinkedList<T> {
@Override @Override
public T getBefore(T reference) { public T getBefore(T reference) {
// head represents the last inserted item thus making enrire list in reverse // head represents the last inserted item thus making entire list in reverse
// order // order
CustomLinkedListNode<T> node = traverseFind(head, reference, ItemPosition.AFTER); CustomLinkedListNode<T> node = traverseFind(head, reference, ItemPosition.AFTER);
return node == null ? null : node.getItem(); return node == null ? null : node.getItem();