cs61b homework4

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cs61b homework4相关的知识,希望对你有一定的参考价值。

作业中没给测试代码,测试代码是从一亩三分地论坛上盗的别人的。

运行结果:

DList:

技术分享技术分享

LockDList:

技术分享技术分享

因为List之前的homework和project中已经实现过好几回了,所以感觉这次作业还比较轻松,没有怎么debug就出来了;

贴一下LockDList的代码好了:

LockDListNode:

技术分享
package list;

public class LockDListNode extends DListNode {

    boolean isLocked;
    LockDListNode(Object i, DListNode p, DListNode n) {
        super(i, p, n);
        isLocked=false;
        // TODO Auto-generated constructor stub
    }

}
View Code

LockDList:

技术分享
package list;

public class LockDList extends DList {
     protected LockDListNode newNode(Object item, DListNode prev, DListNode next) {
            return new LockDListNode(item, prev, next);
          }
     public void lockNode(DListNode node) {
         if(node instanceof LockDListNode)
         ((LockDListNode)node).isLocked=true;
         else
             return;
     }
     public LockDListNode prev(DListNode node) {
            return ((LockDListNode)super.prev(node));
          }
     public LockDListNode next(DListNode node) {
            return ((LockDListNode)super.next(node));
          }
     public LockDListNode front() {
            return((LockDListNode)super.front());
          }
      public LockDListNode back() {
          return ((LockDListNode)super.back());
      }
      public void remove(DListNode node) {
          if(((LockDListNode)node).isLocked)
              return;
          else
              super.remove(node);
      }
     
}
View Code

 

注意的是:1:子类overwrite方法只需要名称一致就行,返回的type类型可以变。

2:protected关键字在子类和同一package内均可使用(之前以为仅限定子类)

3:newNode方法很有用,可以避免LockDList中的代码重复

4:补充一点lecture里面讲到的关于Field shadow的问题:

choice of methods dictated by dynamic type.

choice of fields dictated by static type.

不知道咋样翻译准确些,就直接写英文的notes好了。

 

以上是关于cs61b homework4的主要内容,如果未能解决你的问题,请参考以下文章

CS61b homework1

CS 61B Lab5

CS61b homework2 打卡

CS61B LAB1

CS61b lab4打卡

cs61b project1