gpt4 book ai didi

java - 链表在方法java之后删除

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:18:35 25 4
gpt4 key购买 nike

我一直在处理链表,我试图在另一个节点之后删除一个节点。我知道如何删除当前节点之前的内容,但我现在需要之后的内容,但我似乎无法弄清楚。我让它工作了一次,但它删除了当前节点之后的每个节点,而不仅仅是当前节点之后的节点。下面是插入之后和删除之前的代码:

// Remove the node containing item nVal
public void removeBefore(E curVal, E nVal) {
// You implement this method for Assignment 2
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) {

newNode.setNext(curr);
prev.setNext(newNode);
break;
} else {
// advanced curr and prev
prev = null;
curr = curr.getNext();
}
}
}


// Insert new node nVal to the list after current node curVal
public void insertNodeAfter(E nVal, E curVal) {
// You implement this method for Week 11 tutorial
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();
}
}
}

感谢任何指导。

最佳答案

用于删除单向链表中包含给定项的代码包括:

  • 从头开始搜索列表的值,跟踪前一个节点
  • 如果该节点是第一个(前一个为空),则从下一个开始列表
  • 否则,将上一个点直接指向下一个(也适用于最后一个节点)

代码可能是这样的:

// Remove the node containing item nVal
public void remove(E curVal) {
Node<E> curr = head;
Node<E> prev = null;


// scan until locate node or come to end of list
while (curr != null) {
// have a match
if (curr.getNodeValue().equals(curVal)) {

if (prev == null) { // curr is first node: just start to next
head = curr.getNext();
}
else { // make prev point to next
prev.setNext(curr.getNext());
}
break;
} else {
// advanced curr and prev
prev = curr;
curr = curr.getNext();
}
}
}

关于java - 链表在方法java之后删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37159068/

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