gpt4 book ai didi

java - 删除循环链表中的第一个元素

转载 作者:行者123 更新时间:2023-11-30 08:41:48 26 4
gpt4 key购买 nike

我在使用循环链表的删除方法时遇到问题。它只执行 if 语句。我究竟做错了什么?我该如何解决这个问题?在循环链表中,您只需要跟踪指向最后一个的第一个元素

public void remove()
{
Node currNode = first;
Node prevNode = null;
if(first != null)
{
if(currNode.getNext() == first)
{
first = null;
}
}
else
{
prevNode = currNode;
currNode = currNode.getNext();
}
}

class Node
{
private int data;
private Node next;

public Node(int data, Node next) {
this.data = data;
this.next = next;
}

public int getData() {
return data;
}

public Node getNext() {
return next;
}

public void setNext(Node next) {
this.next = next;
}
}

最佳答案

Node currNode = first;
Node prevNode = null;

是局部变量,所以在函数 remove() 之后,它们被删除了,而你没有存储这个值。每次调用 remove() 时,currNode 和 prevNode 都有一些值。所以你应该使用这个变量作为类变量:

...
Node currNode = first;
Node prevNode = null;

public void remove()
{
if(first != null)
{
if(currNode.getNext() == first)
{
first = null;
}
}
else
{
prevNode = currNode;
currNode = currNode.getNext();
}
}

或者你应该使用 currNode.setNext(...) 而不是 currNode = ...

关于java - 删除循环链表中的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34838297/

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