Pat*_*Pat 4 java algorithm linked-list
我一直在尝试使用 Java 在当前节点之后将节点插入到链表中。我已经能够在当前节点之前插入,但我无法让它工作:
这是 的代码insertNodeBefore
。我只想知道是否有办法调整它以便能够在当前节点之后插入?
// Insert new node nVal to the list before current node curVal
public void insertNodeBefore(E nVal, E curVal) {
Node<E> newNode = new Node<E>(nVal);
Node<E> curr = head;
Node<E> prev = null;
if (head.getNodeValue() == curVal) {
newNode.setNext(head);
head = newNode;
return;
}
// scan until locate node or come to end of list
while (curr != null) {
// have a match
if (curr.getNodeValue() == curVal) {
// insert node
newNode.setNext(curr);
prev.setNext(newNode);
break;
} else {
// advanced curr and prev
prev = curr;
curr = curr.getNext();
}
}
}
Run Code Online (Sandbox Code Playgroud)
基本上找到节点,然后:
这样的事情应该工作:
public void insertNodeBeAfter(E nVal, E curVal) {
Node<E> newNode = new Node<E>(nVal);
Node<E> curr = head;
// scan until locate node or come to end of list
while (curr != null) {
// have a match
// Replaced == with .equals
if (curr.getNodeValue().equals(curVal)) {
// insert node
newNode.setNext(curr.getNext());
curr.setNext(newNode);
break;
} else {
curr = curr.getNext();
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意没有必要对头部进行不同的治疗,因为它不会改变。
注意:如果列表为空或未curVal
找到,则静默处理 NOT 可能会很有趣,例如抛出RuntimeException
.