中级农民
- 积分
- 271
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2013-10-17
- 最后登录
- 1970-1-1
|
Part I, DList() constructor那里,我一开始用的:
public DList() {
head = newNode(Integer.MIN_VALUE, head, head);
size = 0;
}
compile的时候一直提醒null pointer,参考了网上的code才知道需要加两行:
head.prev = head;
head.next = head;
这里我就很疑惑了,在newNode(Integer.MIN_VALUE, head, head)里不是已经指定prev和next都是head了吗?为什么还要写head.prev 和head.next呢? 有木有大神解答一下。
看到楼上已经有人回答过了:因为head = newNode(Integer.MIN_VALUE, head, head);在执行的时候是从右到左,先create一个newNode,prev和next都是head,但head此时还没有被定义,所以其实prev和next指向null;
part III完全把我弄糊涂了
LockDListNode(Object i, DListNode p, DListNode n) {
super(i, p, n);
locked = false;
}
不能写成
LockDListNode(Object i, LockDListNode p, LockDListNode n) {
super(i, p, n);
locked = false;
}
还有:
public class LockDList extends DList {
protected LockDListNode newNode(Object item, DListNode prev, DListNode next) {
return new LockDListNode(item, prev, next);
}
不能写成:
public class LockDList extends DList {
protected LockDListNode newNode(Object item, LockDListNode prev, LockDListNode next) {
return new LockDListNode(item, prev, next);
}
虽然还是不太明白为什么……
|
 组图打开中,请稍候......
|