impl: cll remove
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user