为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

富国沪深 2021-04-02 18:10:17
对于下面的代码,我想知道为什么链表的大小总是让我得到一个空指针,为什么我的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());}}我想弄清楚链表的大小,并能够在最后添加节点。
查看完整描述

2 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

您的while循环head直接修改变量。这会导致您的其他代码失败,因为现在head指向列表中的最后一个节点。

创建一个新的局部变量,以便在while循环中使用(而不是直接修改head)。那应该解决它!


查看完整回答
反对 回复 2021-04-14
  • 2 回答
  • 0 关注
  • 141 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信