gpt4 book ai didi

java - 为什么我的链表的头节点没有被删除?

转载 作者:行者123 更新时间:2023-12-01 18:15:21 25 4
gpt4 key购买 nike

好的,我正在使用 Java 中的链表。我试图理解为什么我的 deleteNode 方法不删除头节点。它适用于其他节点。

方法如下

Node deleteNode(Node head, int d){
Node n = head;
if(n.data == d){
return head.next;
}

while(n.next != null){
if(n.next.data == d){
n.next = n.next.next;
return head;
}
n = n.next;
}
return head;
}

示例输入:

Node ll = new Node(1);
ll.appendToTail(2);
ll.appendToTail(3);

当我调用我的方法时

ll.deleteNode(ll, 2);

然后打印当前节点,我得到了正确的输出1->3,但是当我使用该方法删除初始节点或头时

ll.deleteNode(ll, 1);

我得到输出 1->2->3,但我期望 2->3,其中 2 成为新头。下面是整个实现以防万一

public class Node {

Node next = null;
int data;

public Node(int d){
data = d;
}

void appendToTail(int d){

Node end = new Node(d); //Item to append to the end
Node n = this; //To access Class object next

while(n.next != null){
n = n.next;
}
n.next = end;
}

Node deleteNode(Node head, int d){
Node n = head;
if(n.data == d){
return head.next;
}

while(n.next != null){
if(n.next.data == d){
n.next = n.next.next;
return head;
}
n = n.next;
}
return head;
}

void printNodes(){
Node n = this;
while(n.next != null){
System.out.println(n.data);
n = n.next;
}
System.out.println(n.data); //print out the last node
}

//For fun, to simulate how python print's a list
// printed example [1, 2, 3]
void listNodes(){
Node n = this;
StringBuilder sb = new StringBuilder();
sb.append("[");
while(n.next != null){
sb.append(n.data).append(", ");
n = n.next;
}
sb.append(n.data);
sb.append("]");
System.out.println(sb.toString());
}
}

最佳答案

根据您编写的函数,您应该像 ll = ll.deleteNode(ll, 1) 一样使用它。

此外,您不需要采用 head 参数,因为 this 已经是 head

如果需要,您还可以将返回类型更改为void,将return head.next替换为data = head.next.data; next = head.next.next,并将 return head; 替换为 return; ;然后你就可以像你想要的那样调用它。

完整的方法如下:

void deleteNode(int d){
Node n = this;
if(n.data == d){
data = next.data;
next = next.next;
return;
}

while(n.next != null){
if(n.next.data == d){
n.next = n.next.next;
return;
}
n = n.next;
}
return;
}

关于java - 为什么我的链表的头节点没有被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29997462/

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