试图找出链表的大小空指针错误

对于下面的代码,我想知道为什么链表的大小总是让我得到一个空指针,为什么我的pushEnd方法在末尾推一个新节点不起作用,它在几个节点之后添加了一个元素并得到摆脱休息。


class Node {

int data;

Node next;

Node(int data){

    this.data = data;

}

}


public class LinkedList {

Node head;  


/* Inserts a new Node at front of the list. */

public Node push(int data) 

    Node newNode = new Node(data); 

    newNode.next = head; 

    return head = newNode; 

}


public Node pushEnd(int data) {

    Node newNode = new Node(data);

    if (head == null) {

        head = newNode;

    }


    newNode.next = null;


    while(head != null) {

        head = head.next;

        head.next = newNode;

        return newNode;

        }

    return head;

}


public int getSize() {

    int size = 0;

    while(this.head != null) {

        size++;

        head = head.next;

    }

    return size;

}



public void printList() {

    while (this.head !=null) {

        System.out.print(head.data + "-->");

        head = head.next;

    }       

    System.out.println(head);

}

}


public class Tester {



public static void main(String[] args) {


    LinkedList ll = new LinkedList();


    ll.push(35);

    ll.push(100);

    ll.push(14);

    ll.push(44);

    ll.push(10);

    ll.push(8);



    System.out.println("Created Linked list is:"); 

    ll.printList(); 




    System.out.println(ll.getSize());


}


}

我想弄清楚链表的大小,并能够在最后添加节点。


富国沪深
浏览 142回答 2
2回答

摇曳的蔷薇

您的while循环head直接修改变量。这会导致您的其他代码失败,因为现在head指向列表中的最后一个节点。创建一个新的局部变量,以便在while循环中使用(而不是直接修改head)。那应该解决它!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java