我正在编写一种方法来删除重复的Node,但是它一直在行:while(m.next!= null)处获取NullPointerException。
public class Node {
public int data;
public Node next;
public Node (int data) {
this.data = data;
this.next = null;
}
public void removeDup () {
Node n = this;
while (n != null) {
Node m = n;
while (m.next != null) {
if (n.data == m.next.data)
m.next = m.next.next;
m = m.next;
}
n = n.next;
}
}
}
答案 0 :(得分:0)
请考虑以下3个循环步骤:
while (m.next != null) { // 3. now in the next iteration, m == null, so you get
// NullPointerException
if (n.data == m.next.data)
m.next = m.next.next; // 1. if m.next.next == null, you assign m.next = null
m = m.next; // 2. then you assign m = null
}
答案 1 :(得分:0)
能否请您分享完整的代码?
看起来'n'尚未被实例化,因此当您将其分配给'm'时,它仍然为NULL,因此是异常。