gpt4 book ai didi

java - 为什么在开始尝试添加节点时列表显示为空?

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:20 27 4
gpt4 key购买 nike

我真的失去了理智,试图弄清楚为什么我的 add()print() 方法不起作用。我几乎尝试了所有方法,但就是做不到这一点。我知道我的代码是完全错误的(我什至无法判断我的代码在某一点或另一点是否正确,因为我删除了它来尝试新事物)那么它可能有什么问题呢?

感谢您花时间阅读。

NodeFN 类:

public class NodeFN {
private String data; // Data for node.
private NodeFN next; // Next node.

public NodeFN(String data) {
this.data = data; // Take the data value passed in & store it in the data field.
this.next = null; // Take the next node & store it in the next field.
}

// Mutator functions.
public String getData() {return data;}
public NodeFN getNext() {return next;}
public void setData(String d) {data = d;}
public void setNext(NodeFN n) {next = n;}
}

队列类别:

public class Queue {
NodeFN head; // Head of node.
public String n;

public Queue(String n) {
head = new NodeFN(n); // head is now an object of NodeFN which holds a string.
}

public void add(String n) {
NodeFN nn = new NodeFN(n); // nn is now an object of NodeFN which holds a string, it should return something.
if(head == null) {
head = nn;
}
while(nn.getData().compareTo(head.getData()) < 0) {
nn.setNext(head); // Put node in beginning of the list.
nn.setData(n);
}
}

public void print() {
NodeFN nn = new NodeFN(n);

while(nn != null) {
nn.getNext().getData();
System.out.println(nn.getData() + " ");
}
}

public static void main(String[] args) {
Queue q = new Queue("string to test");
q.add("another string to test if add method works.");
q.print();
}
}

最佳答案

我无法代表您的 add 方法,但是这里的 n 是什么?

public void print() {
NodeFN nn = new NodeFN(n);

while(nn != null) {
nn.getNext().getData();
System.out.println(nn.getData() + " ");
}
}

队列类根本不应该关心public String n。您只需要 head 节点。

然后,nn.getNext().getData(); 返回一些东西,是吗?但是,您没有打印它,也没有在列表中“前进”。 (您不会将 nn 分配给下一个节点)。

尝试这样的事情

public void print() {
if (head == null) System.out.println("()");

NodeFN tmp = head;

while(tmp != null) {
System.out.println(tmp.getData() + " ");
tmp = tmp.getNext();
}
}
<小时/>

如果您希望将节点添加到列表的开头,那么这应该可行。

public void add(String n) {
NodeFN nn = new NodeFN(n);
if(head == null) {
head = nn;
}

// Don't use a while loop, there is nothing to repeat
if (n.compareTo(head.getData()) < 0) {
// Both these operations put 'nn' in beginning of the list.
nn.setNext(head);
head = nn;
}
}

关于java - 为什么在开始尝试添加节点时列表显示为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40427538/

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