Part 1部分相对比较简单,即是迁移了部分method,然后加了一个新的variable来存list。
DList myList = (DList) this.myList;大概解释一下这句话,DListNode是extends ListNode这个class的,myList是在ListNode这个class里面定义的,所以子类自动获取(继承)了这个Variable。且这个Variable是remote control List这个class的,所以得强制转型(class cast)来使其获得DList的一些特殊功能。因为我们是清楚的,这个this.myList这个object本质就是披着List的DList。Part 2确实...算有一定难度。
但是瞎搞还是能搞出来。
Insert就是从头到尾,一个一个找,直到找到比自己大的放下即可。遇到相等或者比这个item小的都跳过就行。
Union:思路即是,拿着s的最小元素开始,并从this的最小元素开始,只记着s的元素 < this的元素,就放。然后不同条件下,不同的set move到下一个node。
而且还要巧妙利用catch exception,可以省不少事,还可以留空catch,也可以省不少事(相当于帮你判断是否到boundary)。
Interse:我的思路是把真正的新元素都放在这个set的最后insertBack,这样刚好也能maintain它的顺序。之后再把前面的重复或没用的都remove掉即可。To be specific,记个数,用for remove掉。最后这个intersect很快就写好,没有ji xi去想更好的方法,也许可以写个private helper直接从头开始覆盖?