impl: cll remove

This commit is contained in:
Václav Přibík
2025-10-17 13:01:47 +02:00
parent 6d43f605b8
commit 53a09f6538

View File

@@ -45,7 +45,7 @@ public class CustomLinkedListImpl<T> implements CustomLinkedList<T> {
break; break;
case AFTER: case BEFORE:
if (nextNode == null) { if (nextNode == null) {
return null; return null;
@@ -57,7 +57,7 @@ public class CustomLinkedListImpl<T> implements CustomLinkedList<T> {
break; break;
case BEFORE: case AFTER:
if (nextNode == null) { if (nextNode == null) {
return null; return null;
@@ -82,8 +82,27 @@ public class CustomLinkedListImpl<T> implements CustomLinkedList<T> {
@Override @Override
public void remove(T item) { public void remove(T item) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'remove'"); CustomLinkedListNode<T> nodeToRemove = traverseFind(head, item, ItemPosition.CURRENT);
if (nodeToRemove == null) {
return;
}
if (nodeToRemove == head) {
head = head.getNext();
return;
}
CustomLinkedListNode<T> beforeNode = traverseFind(head, item, ItemPosition.BEFORE);
if (nodeToRemove.getNext() == null) {
beforeNode.setNext(null);
return;
}
beforeNode.setNext(nodeToRemove.getNext());
} }
@Override @Override
@@ -100,13 +119,19 @@ public class CustomLinkedListImpl<T> implements CustomLinkedList<T> {
@Override @Override
public T getAfter(T reference) { public T getAfter(T reference) {
CustomLinkedListNode<T> node = traverseFind(head, reference, ItemPosition.AFTER);
// head represents the last inserted item thus making enrire list in reverse
// order
CustomLinkedListNode<T> node = traverseFind(head, reference, ItemPosition.BEFORE);
return node == null ? null : node.getItem(); return node == null ? null : node.getItem();
} }
@Override @Override
public T getBefore(T reference) { public T getBefore(T reference) {
CustomLinkedListNode<T> node = traverseFind(head, reference, ItemPosition.BEFORE);
// head represents the last inserted item thus making enrire list in reverse
// order
CustomLinkedListNode<T> node = traverseFind(head, reference, ItemPosition.AFTER);
return node == null ? null : node.getItem(); return node == null ? null : node.getItem();
} }