这就是我所拥有的:
public class Node{
Object data;
Node next;
Node(Object data, Node next){
this.data = data;
this.next = next;
}
public Object getData(){
return data;
}
public void setData (Object data){
this.data = data;
}
public Node getNext(){
return next;
}
public void setNext(Node next){
this.next = next;
}
}
如何编写代码以在列表末尾添加节点?
所以,如果我有
head -> [1] -> [2] -> null
我如何到达
head -> [1] -> [2] -> [3] -> null
实际上......我甚至不确定我是否必须添加到最后。我认为添加然后排序是有效的吗?不确定。
谢谢!
答案 0 :(得分:5)
public void addToEnd(Object data){
Node temp = this;
while(temp.next!=null)temp=temp.next;
temp.next=new Node(data, null);
}
答案 1 :(得分:4)
这是一个链表。你要么
A)从头部开始遍历所有节点,找到最后一个节点,然后添加一个节点。
或
B)跟踪尾部,添加到尾部,然后将尾部更新到新的最后一个节点。
答案 2 :(得分:2)
从头开始:
Node currentNode = headNode;
while (node.getNext() != null) {
currentNode = currentNode.getNext();
}
currentNode.setNext(newNodeForInsertion);
更快的方法是将列表的最后一个节点存储在某个地方,这样您就不必浏览整个列表。
答案 3 :(得分:2)
递归浏览每个节点,直至结束。
public void navigate(Node insertNode)
{
if(next == null)
next = insertNode;
else
next.navigate(insertNode);
}
答案 4 :(得分:1)
要添加到最后,您必须走到列表的末尾(即,到next = null)并在那里添加新节点。
在现实世界中,您可以使用ArrayList,而不必使用链接列表或手动结构。
答案 5 :(得分:1)
在添加节点的方法中,编写一个从头开始的while循环,并查看“next node”是否为null。如果不是,请前进到“下一个节点”并重复。
一旦您处于指向空的节点,添加节点就像将空引用重新分配给要添加的节点一样简单。
答案 6 :(得分:1)
递归解决方案:
public void addToEnd(Object data){
if (next==null)
next = new Node(data, null);
else
next.addToEnd(data);
}
答案 7 :(得分:0)
Node n = head;
while(n.getNext() != null){
n = n.getNext();
}
n.setNext(nodeToAdd);
这没有排序,如果你想要它排序,我无法从你的问题中分辨出来。这会打开另一整套蠕虫,例如你想要排序的是什么,如果你有一个类型为Object的链表,那么就没有任何有意义的排序。