如何在Java中的双向链表中插入第一个元素

时间:2014-01-26 21:05:15

标签: java doubly-linked-list

我一直在看各种帖子,但我似乎无法解决这个问题 - 如何将一个元素插入一个空的双向链表? (我无法想象一个空的DLL。)我想从文件中读取内容并将它们插入到DLL中,我还有一个添加对象的方法来帮助解决这个问题。

public void add(ListNode prev, Object object, ListNode next){
    ListNode newNode = new ListNode(prev, object, next);
    prev.setNext(newNode);  
    newNode.setPrevious(prev);
    newNode.setNext(next);
    next.setPrevious(newNode);
}

在我阅读对象并插入对象的方法中,

int currNum = scanner.nextInt();
DoublyLL dll = new DoublyLL();
ListNode curr = dll.getFirst(); //start at beginning of list
ListNode prev = null;

if(curr == null){   //if the list is empty
    ListNode first = new ListNode(curr, currNum, null);
    dll.getFirst().setValue(first); //returns a null-pointer exception
}

最后一行产生空指针异常。那么如何插入第一个元素?你用add()吗?谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您首先需要执行dll.setFirst(<some non-null object>)之类的操作然后执行最后一行。它显然是null(因为您刚刚在if语句中测试了这个条件)。您无需在first中设置一些值,您需要先在此处实例化first

答案 1 :(得分:0)

您只需将标题指向它即可 header = new Node(null,currNum,null);