gpt4 book ai didi

java - 如何在喜欢列表中任意插入节点?

转载 作者:行者123 更新时间:2023-11-30 03:30:56 25 4
gpt4 key购买 nike

我即将实现一个能够在链表中任意插入节点的函数。下面的代码适用于在列表的第一个节点插入节点,但对于将节点放在另一个节点后面则不起作用。老实说,我不明白这段代码有什么问题。另外,当我跟踪代码时,我找不到我的错误。请不要禁止我并帮助我解决这个问题。提前致谢。类节点来了:

public class Node {
Object Element;
Node Link;

public Node() {
this(null,null);
}

public Node(Object Element, Node Link) {
this.Element = Element;
this.Link = Link;
}

}

类(class)列表:

 public class List {
Node FirstNode;
Scanner UserInfo = new Scanner(System.in);
Scanner UserInput = new Scanner(System.in);
public List() {
FirstNode = null;
}
public void InsertArbitrary() {
int Location = UserInput.nextInt(); // Location of new node
if (Location == 1) {
Object Element = UserInfo.nextLine();
FirstNode = new Node(Element, FirstNode); // locates a New Node At First
} else {
Object Element = UserInfo.nextLine(); // Content of new node
Node CurrentNode ; // for searching in the list
CurrentNode = FirstNode;
for (int i = 1; i <= Location - 1; i++)
CurrentNode = CurrentNode.Link;
Node NewNode = new Node (Element , CurrentNode);
}
}
}

最佳答案

迭代到插入位置后,您可以正确创建一个新节点并将其链接分配给下一个元素。但是您没有做的是更新以前的链接以指向新节点,因此列表的尾部不再可以从头节点访问。

你必须做这样的事情(未经测试):

Node FirstNode;
int Length = 0;
public List() {
FirstNode = null;
}
public void InsertArbitrary(int Location, Object Element) {
if (Location == 1 || Length == 0) {
FirstNode = new Node(Element, FirstNode); // locates a New Node At First
Length++;
} else {
Node CurrentNode ; // for searching in the list
CurrentNode = FirstNode;
for (int i = 1; i <= Location - 2 && i < Length; i++)
CurrentNode = CurrentNode.Link;
Node NewNode = new Node (Element , CurrentNode.Link);
CurrentNode.Link = NewNode;
Length++;
}
}

关于java - 如何在喜欢列表中任意插入节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29066243/

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