[英]Printing a Linked List in Java
我正在做一个作业,需要在给定模板的情况下创建链接列表。 但是,到目前为止,我一直对如何打印出链表感到困惑。 谁能知道我在做什么错?
编辑:对不起,我应该指出,编译时我在NumberList的第27行遇到了java.lang.NullPointerException错误。
我编译时出错。
NumberList.java
import java.util.*;
public class NumberList {
private Node head;
public NumberList() {
}
public void insertAtHead(int x) {
Node newNode = new Node(x);
if (head == null)
head = newNode;
else {
newNode.setNext(head);
head = newNode;
}
}
public void insertAtTail(int x) {
}
public void insertInOrder(int x) {
}
public String toString() {
Node tmp = head;
String result = "";
while (tmp.getNext() != null) {
result += tmp.toString() + " ";
}
return result;
}
//---------------------
// test methods
//---------------------
public static void testInsertAtHead() {
Random r = new Random();
int n = 20;
int range = 1000;
NumberList list = new NumberList();
for (int i=1; i<=n; i++) {
int x = r.nextInt(range);
list.insertAtHead(x);
System.out.println("" + x + ": " + list);
}
}
public static void testInsertAtTail() {
Random r = new Random();
int n = 20;
int range = 1000;
NumberList list = new NumberList();
for (int i=1; i<=n; i++) {
int x = r.nextInt(range);
list.insertAtTail(x);
System.out.println("" + x + ": " + list);
}
}
public static void testInsertInOrder() {
Random r = new Random();
int n = 20;
int range = 1000;
NumberList list = new NumberList();
for (int i=1; i<=n; i++) {
int x = r.nextInt(range);
list.insertInOrder(x);
System.out.println("" + x + ": " + list);
}
}
public static void main(String[] args) {
//testInsertAtHead();
//testInsertAtTail();
testInsertInOrder();
}
}
Node.java
class Node {
private int number;
private Node next;
public Node(int n) {
this.number = n;
this.next = null;
}
public Node getNext() {
return next;
}
public int getNumber() {
return number;
}
public void setNext(Node n) {
if (n == null)
return;
n.setNext(next);
next = n;
}
public String toString() {
return number + "";
}
}
您的问题是:
while (tmp.getNext() != null) {
result += tmp.toString() + " ";
}
您根本没有前进到列表中的下一个链接。 你应该考虑表演
tmp = tmp.getNext()
。 但是在这样做之前,请确保您的while
条件是
while (tmp != null)
避免NullPointerException
。
而您在第27行 (我们不知道它在哪里)中得到的NullPointerException
可能是因为未初始化head
原因,因为您在insertAtHead
之前调用了insertInOrder
,这是在程序中唯一初始化head
地方。
您正在调用insertAtTail和insertInOrder方法,但它们为空。 以及您的NumberList构造函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.