实现双向链表时始终报错!


双向链表非常简单的实现,逻辑和思路都很清晰明了,但是想不到的是老报错!
最后一个语句始终报空指针异常是怎么回事?

   
  public class DLLNode {
  
static DLLNode head, second, third, tail;
//链表结点所保存的数据
Object data;
//和单向链表所不同的是增加了一个前指针
DLLNode prev;
DLLNode next;
//构造方法
DLLNode(Object obj, DLLNode prevLink, DLLNode nextLink){
data = obj;
prev = prevLink;
next = nextLink;
}
public String toString(){
return data.toString();
}
public static void main(String[] args){
//创建具有四个结点的双向链表
head = new DLLNode("dog", null, second);
second = new DLLNode("cat", head, third);
third = new DLLNode("rat", second, tail);
tail = new DLLNode("pig", third, null);
//双向链表的遍历,从最后一个结点开始遍历,当然也可以从第一个结点开始遍历
for(DLLNode cur=tail; cur!=null; cur=cur.prev){
System.out.print(cur.data+" ");
}
System.out.println();
//删除双向链表的第一个结点
head = head.next;
//System.out.println(head.prev);
head.prev = null;//

}
}

java 数据结构

萌系怪叔叔 12 years, 6 months ago

因为你在实例化head: head = new DLLNode("dog", null, second)时,second还没实例化,所以 head = head.next时, head.next就是second,这是second这时是null,所以head是null,导致head.prev是空指针异常。

RenXY answered 12 years, 6 months ago

Your Answer