【发布时间】:2015-10-30 01:01:05
【问题描述】:
我正在尝试编写一个函数addFirst(),它接受一个项目并将其插入到双向链表的前面。双向链表有两个虚拟节点,每端一个。到目前为止,我编写的 addFirst() 方法仅在我遍历列表并打印它时返回两个虚拟节点。我无法弄清楚我的代码有什么问题。
public void addFirst(E item) {
if (item.equals(null)) { throw new NullPointerException(); }
Node node = new Node(item, null);
Node ptr = first;
ptr.next.prev = node;
node.prev = ptr;
node.next = ptr.next;
}
public static void main(String[] args) {
Deque<Integer> lst = new Deque<Integer>(); // empty list
lst.addFirst(1);
lst.addFirst(2);
lst.addFirst(3);
Iterator<Integer> it = lst.iterator(); // tests iterator method
while (it.hasNext()) {
Integer val = it.next();
System.out.println(val);
}
}
当我运行 main 时,我得到的只是:
null null
但是,我希望:
null 3 2 1 null
谁能告诉我如何修复我的代码,以便我可以在两个虚拟第一个和最后一个节点之间的双向链表的开头添加一个项目?
【问题讨论】: