gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:42:07 25 4
gpt4 key购买 nike

对于下面的代码,我想知道为什么链表的大小总是给我一个空指针异常以及为什么我的 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());

}

}

我想计算出链表的大小,并能够在末尾添加节点。

最佳答案

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

创建一个新的局部变量用于 while 循环(而不是直接修改 head)。这应该可以解决它!

关于java - 试图找出链表空指针错误的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54058886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com