我编了一个java数据结构的小程序,但是运行时始终抛空指针的异常,所以,我想请教一个各位高手,部分代码如下:public Object deQueue(){
Object e;
if(front==rear) return null;
OneLinkNode p=front.getNext();
e=p.getData();
if(p.getNext()==null){
front=rear;
return e;
}
else{
OneLinkNode q=p.getNext();
p=q;
return e;
}
}
这是一个链式队列LinkQueue的出队列的方法,此类有OneLinkNode类型的两个成员变量,front和rear,分别表示头结点和尾结点,OneLinkNode为一个单链表的类,此类有两个成员变量,分别为Object类型的data,用于表示结点的数据值,OneLinkNode类型的成员变量next,表示后继结点,此外还有OneLinkNode 类还有连个成员方法,分别为getData()和getNext,分别用于返回两个成员变量,运行时提示带颜色的那一行出现空指针的异常。
Object e;
if(front==rear) return null;
OneLinkNode p=front.getNext();
e=p.getData();
if(p.getNext()==null){
front=rear;
return e;
}
else{
OneLinkNode q=p.getNext();
p=q;
return e;
}
}
这是一个链式队列LinkQueue的出队列的方法,此类有OneLinkNode类型的两个成员变量,front和rear,分别表示头结点和尾结点,OneLinkNode为一个单链表的类,此类有两个成员变量,分别为Object类型的data,用于表示结点的数据值,OneLinkNode类型的成员变量next,表示后继结点,此外还有OneLinkNode 类还有连个成员方法,分别为getData()和getNext,分别用于返回两个成员变量,运行时提示带颜色的那一行出现空指针的异常。
front.getNext() 为空,你可以加上打印测试一下的啊,
if(front==rear) return null;
其实是相等的,但是你没检测出来,哈哈哈
得到得 P 是 NULL ;
不用看楼主的所有的代码,只看楼主已放出来的代码,就知道“这个java数据结构的小程序”中代码问题很多,楼主的“空指针的异常”错误仅是其中很幸运的一个小错误,是由代码中的链表操作逻辑错误的代码产生的。一句话:楼主的链表中数据其实已经是乱掉了。
一定要检查p是否为NULL啊