Java - 将一个节点添加到列表的末尾?

时间:2011-04-26 13:16:08

标签: java

这就是我所拥有的:

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

实际上......我甚至不确定我是否必须添加到最后。我认为添加然后排序是有效的吗?不确定。

谢谢!

8 个答案:

答案 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的链表,那么就没有任何有意义的排序。