对于下面的代码,我想知道为什么链表的大小总是让我得到一个空指针,为什么我的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)。那应该解决它!
添加回答
举报
0/150
提交
取消