如何在不知道头节点的情况下找到链表的第一个节点

时间:2017-04-01 05:19:53

标签: java data-structures linked-list

我有一个链接列表:20 - > 30 - > 40 - > 50,此链接列表的引用为L

这是我的类和主要方法,我调用了一个方法addAtFirst(),如下所示:

class LinkedListInsertingNode {
      Node head=null;

class Node{
    int data;
    Node next;
    LinkedListInsertingNode L;
    public Node(int data){
        this.data=data;
        next=null;
    }

    public Node(LinkedListInsertingNode L){
        this.L=L;
        next=null;
    }
}
public void append(int data){

        Node new_node=new Node(data);
        if(head==null){
            head=new Node(data);
            return;
        }
        //new_node.next=null;
        Node last;
            last=head;

        while(last.next!=null)
        {
            last=last.next;
        }
        last.next=new_node;
        //return;
    }

public void addAtFirst(int data,LinkedListInsertingNode L)
    {
          // I want to add my code here..   
    }

public static void main(String[] args) {

    LinkedListInsertingNode L=new LinkedListInsertingNode();

    L.append(10);
    L.append(20);
    L.append(30);
    L.append(40);
    L.append(50);

    L.addAtFirst(5,L);
    L.printList();

现在,我该如何添加" 10"在不知道头部的情况下,在我的链接列表的第一个位置。也不要使用任何方法。

所以最后,List应该是这样的:10 - > 20 - > 30 - > 40 - > 50

在调用方法addAtFirst()时,我传递元素和链接列表。 在我的代码中我知道Head元素,但是假设我们不知道Link-List的头部那么我们如何在第一个位置添加元素?

谢谢..!

1 个答案:

答案 0 :(得分:0)

您可以创建一个新节点并将其与头节点交换,如:

public class LinkedListInsertingNode {
Node head = null;

class Node {
    int data;
    Node next;
    LinkedListInsertingNode L;

    public Node(int data) {
        this.data = data;
        next = null;
    }

    public Node(LinkedListInsertingNode L) {
        this.L = L;
        next = null;
    }
}

public void append(int data) {

    Node new_node = new Node(data);
    if (head == null) {
        head = new Node(data);
        return;
    }
    //new_node.next=null;
    Node last;
    last = head;

    while (last.next != null) {
        last = last.next;
    }
    last.next = new_node;
    //return;
}

public void addAtFirst(int data, LinkedListInsertingNode L) {
    // I want to add my code here.. 
    Node node = new Node(data);
    node.next = head;
    head = node;
}

private void printList() {
    Node node = head;
    while (node != null) {
        System.out.println(node.data);
        node = node.next;
    }
}

public static void main(String[] args) {

    LinkedListInsertingNode L = new LinkedListInsertingNode();

    L.append(10);
    L.append(20);
    L.append(30);
    L.append(40);
    L.append(50);

    L.addAtFirst(5, L);
    L.printList();
}
}