gpt4 book ai didi

java - 链表插入节点后

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:22:59 26 4
gpt4 key购买 nike

我一直在尝试使用 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();
}
}
}

最佳答案

基本上找到节点然后:

  • 设置新节点的下一个等于当前节点
  • 将当前节点的下一个设置为新节点

像这样的东西应该可以工作:

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();
}
}
}

注意没有必要对头部进行不同的治疗,因为它不会改变。

注意:如果列表为空或未找到 curVal,例如抛出 RuntimeException,则不静默处理可能很有趣。

关于java - 链表插入节点后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37137350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com