Java 如何在节点索引之间插入新节点
我第一次用Java做面向对象编程项目 下面是我的一些工作 问题:我无法在特定索引中添加新节点。在我的linkedlist类中,我从头部循环打印节点列表,结果如下:Java 如何在节点索引之间插入新节点,java,Java,我第一次用Java做面向对象编程项目 下面是我的一些工作 问题:我无法在特定索引中添加新节点。在我的linkedlist类中,我从头部循环打印节点列表,结果如下:,但我无法在它们之间放置新节点。例如,粉红色的新节点如何在蓝色节点之前添加 有什么帮助或建议吗 ListApp public class ListApp { public static void main(String[] args){ Node n4 = new Node("green", null);
public class ListApp {
public static void main(String[] args){
Node n4 = new Node("green", null);
Node n3 = new Node("orange", n4);
Node n2 = new Node("blue", n3);
Node n1 = new Node("red", n2);
LinkedList list = new LinkedList(n1);
System.out.println(list.getHead().getItem());
System.out.println("\n" );
list.deleteBefore(n2);
System.out.println(list);
}
}
节点类
package lib;
public class Node {
private String item;
private Node nextItem;
public Node(String str, Node n){
item = str;
nextItem = n;
}
public String getItem(){
return item;
}
public void setItem(String str){
item = str;
}
public Node next(){
return nextItem;
}
public void setNext(Node n){
nextItem = n;
}
}
链接列表类
public class LinkedList {
private Node head;
public LinkedList(Node h){
head = h;
}
public Node getHead(){
return head;
}
public void setHead(Node n){
head = n;
}
public void insertAfter(Node newNode, Node prev){
newNode.setNext(prev.next());
prev.setNext(newNode);
}
public void deleteAfter(Node prev){
if ( prev.next() != null ){
prev.setNext(prev.next().next());
}
else prev.setNext(prev.next()); //BECAUSE THERE IS NOTHING TO PRINT OUT.
}
public void changeNextItem(Node n, String str){
if (n.next() != null)
n.next().setItem(str);
}
public void replaceAfter( Node newNode, Node Prev){
newNode.setNext(Prev.next());
Prev.setNext(newNode);
}
public void changeAll(String colour){
Node current = head;
while (current != null){
current.setItem("white");
current = current.next();
}
}
public String toString(){
String str = "";
Node current = head;
while(current != null){
str = str + current.getItem();
current = current.next();
if (current != null){
str = str + ", ";
}
}
return str;
}
}
据我所知,听起来好像您正试图在某个现有节点之后将一个新节点插入LinkedList的中间。你的LinkedList类有一个insertAfter方法,看起来是正确的。尝试从main()调用该方法。例如,如果要在节点n3之后添加一个包含字符串“粉色”的新节点,可以编写以下代码:
list.insertAfter(new Node("pink", null), n3);
如果要在给定的现有节点之前添加节点,可以在LinkedList中编写一个与insertAfter非常类似的方法,只是需要在节点类中添加对上一个节点的引用,或者在insertBefore()方法中循环查找上一个节点。大概是这样的:
public void insertBefore(Node newNode, Node existingNode){
Node current = head;
Node prev = null;
while(current != null){
if(current.getItem().equals(existingNode.getItem())){
prev.setNext(newNode);
newNode.setNext(current);
break;
} else{
prev = current;
current = current.next();
}
}
}
很不清楚你的问题是什么。请使用正确的语法,准确地告诉我们您正在尝试做什么,以及您遇到了什么问题。很抱歉,实际上我无法在特定索引中添加新节点。在我的linkedlist类中,我从头部循环打印节点列表,结果如下: