我编了一个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,分别用于返回两个成员变量,运行时提示带颜色的那一行出现空指针的异常。

解决方案 »

  1.   

    OneLinkNode p=front.getNext();//这里的p为null吗?
      

  2.   

    p.getData();这个有问题,估计没值
      

  3.   

    OneLinkNode p=front.getNext();
    front.getNext() 为空,你可以加上打印测试一下的啊,
      

  4.   

    p不为null,问题就出在e=p.getData();这一行,却又不知为何错
      

  5.   

    问题可能出在这里
     if(front==rear) return null;
    其实是相等的,但是你没检测出来,哈哈哈
      

  6.   

    按你的异常提示,应该是OneLinkNode p=front.getNext();
    得到得  P  是 NULL ;
      

  7.   


    不用看楼主的所有的代码,只看楼主已放出来的代码,就知道“这个java数据结构的小程序”中代码问题很多,楼主的“空指针的异常”错误仅是其中很幸运的一个小错误,是由代码中的链表操作逻辑错误的代码产生的。一句话:楼主的链表中数据其实已经是乱掉了。
      

  8.   

     OneLinkNode p=front.getNext();
     一定要检查p是否为NULL啊