使用Java将节点附加到尾部

时间:2015-10-29 00:18:42

标签: java linked-list

我正在研究一个基本的Hackerrank问题,我们将一个元素附加到链表的末尾。

/*
  Insert Node at the end of a linked list 
  head pointer input could be NULL as well for empty list
  Node is defined as 
  class Node {
     int data;
     Node next;
  }
*/
Node Insert(Node head,int data) {
    if(head == null) {
        Node node = new Node();
        head = node;
        head.data = data;
        head.next = null;
        return head;
    }

    while(head != null) {
        head = head.next;
    }

    head.data = data;
    head.next = null;
    return head;
}

由于某种原因,此解决方案无法编译。我正在寻找其他人解决的问题,他们在非空链表解决方案中使用了一个临时节点。

1 个答案:

答案 0 :(得分:3)

您还需要在最后创建一个新节点。

另外,请不要等到“head==null”或者您将到达列表的末尾,否则您将不知道在哪里插入节点。

您需要转到“head.next==null”,以便最终到达当前的最后一个节点。

此外,如果您必须始终返回列表的头部,则应在开始迭代之前复制引用,如注释中所述。

Node Insert(Node head,int data) {
    if(head == null) {
       Node node = new Node();
       head = node;
       head.data = data;
       head.next = null;
       return head;
    }

    Node current = head;

    while(current.next != null) {
        current = current.next;
    }

    Node node = new Node();
    node.data = data;
    node.next = null;

    current.next = node;

    return head;
}