一个小问题,请大家帮忙
void delete(int x){
p=linkFirst;
while((p.nextnode.data != x) && (p.nextnode != null)){
p = p.nextnode;
}
if(p.nextnode == null){
System.out.printlnfou( "data not nd! ");
}
else{
p.nextnode = p.nextnode.nextnode;
}
}
想删除串列中的值等于x的节点,我将x赋值为串列中不存在的节点值,想让它输出
"data not nd! ",但是main函数报错,报错信息是:
Exception in thread "main "
java.lang.NullPointerException at LinkNode.delete(LinkList.java:66)
at LinkList.main(LinkList.java:87)
------解决方案--------------------你自己调试跟踪下看具体出错的位置这样才好分析为什么出错,也许逻辑有问题,或许linkFirst
根本就是null
------解决方案--------------------代码不是很规范,不过while这行明显有问题:
while((p.nextnode.data != x) && (p.nextnode != null))
应该是:
while(p.nextnode != null && p.nextnode.data != x)
利用&&的“短路”特性,如果p.nextnode为null,则不执行后半部分。