楼主: smoothiethu
跳转到指定楼层
上一主题 下一主题
收起左侧

[入门|算法|数据结构] 自学CS61B打卡,加油这个暑假上完!

🔗
 楼主| smoothiethu 2019-9-11 16:48:29 | 只看该作者
全局:
kningtg 发表于 2019-9-11 15:55
还是搞不太清楚自学公开课的加分机制是啥..
就是这样发作业进度就可以了吗
虽说学课不是问了加分,但是还 ...

好像是要到专门的讨论帖子去发,我这边懒得去找 就直接自己打卡了
回复

使用道具 举报

🔗
 楼主| smoothiethu 2019-9-11 16:50:23 | 只看该作者
全局:
lab6打卡。lab6作业设计的真的是好呀,从一开始不懂throw, try-catch,到现在可以理解里面的逻辑。最后的extra还是没有实现,改天搜搜答案吧。
回复

使用道具 举报

🔗
 楼主| smoothiethu 2019-9-13 14:02:29 | 只看该作者
全局:
这周中把Lecture17,18,19,20, 21, 22, 23听完了。终于听完了java开始数据结构了。这周末的任务是HW5, Lab7, Lab8.
回复

使用道具 举报

🔗
kningtg 2019-9-13 15:18:58 | 只看该作者
全局:
smoothiethu 发表于 2019-9-11 16:48
好像是要到专门的讨论帖子去发,我这边懒得去找 就直接自己打卡了

这种讨论帖有没有什么特殊标志呢..完全认不出来究竟是否承认学分
回复

使用道具 举报

🔗
Cuuu 2019-9-13 17:03:26 | 只看该作者
全局:
哥们请问下我把.java传到了GitHub上为什么autograde还是找不到我的file啊,请问这里有什么坑吗
回复

使用道具 举报

🔗
 楼主| smoothiethu 2019-9-14 04:43:04 | 只看该作者
全局:
kningtg 发表于 2019-9-13 15:18
这种讨论帖有没有什么特殊标志呢..完全认不出来究竟是否承认学分

https://www.1point3acres.com/bbs ... read&tid=179423
比如这个
回复

使用道具 举报

🔗
 楼主| smoothiethu 2019-9-14 04:43:27 | 只看该作者
全局:
Cuuu 发表于 2019-9-13 17:03
哥们请问下我把.java传到了GitHub上为什么autograde还是找不到我的file啊,请问这里有什么坑吗

不好意思呀,我就没用过这个autograde 我就是自己写写test runrun= =
回复

使用道具 举报

🔗
 楼主| smoothiethu 2019-9-17 04:21:44 | 只看该作者
全局:
这周末只把hw5做完了,而且还有bug,处理空集貌似有问题,这周末还把Lec24, 25给听完了。今天晚上打算再看看hw5作业,然后做一下lab。加油坚持,离开学就省不到两周了。。
回复

使用道具 举报

🔗
 楼主| smoothiethu 2019-9-17 06:47:40 | 只看该作者
全局:
hw5 借用别人的收获paste到这里,自己用来复习的时候用把:
收获
0、Set.java 与package list真正体现了protected不作用于package之外。Set.java只能调用list中声明的publ‍‌‌‌‍‍‌‌‌‍‌‍‌‌‌‍‌‌ic函数来调用相关信息。对于set来讲,set看不到list内部数据结构的实现形式:DList或者SList。
1、封装:ListNode加入了List类型的field,使两个class更加紧密的耦合在一起,避免错误的调用外部节点。同样的,这些信息在Set看来,都是隐藏于list之内的。list向外呈现的只有:
inEmpty();length();insertFront();insertBack();front();back();/isValidNode();item();setItem();prev();next(); insertAfter(); insertBefore(); remove();
2、注意方法的归属要准确。
ListNode类:【isValidNode();item();setItem();prev();next(); insertAfter(); insertBefore(); remove();】
List类:【inEmpty();length();insertFront();insertBack();front();back();】
3、接口可以用来引用实现这个接口的对象,这也是接口的意义所在,如Comparable接口。始终注意:“可以引用”不等于“可以调用对象所有属性与方法”----接口的遥控按钮与对象所属类的遥控按钮不一致。
4、Set类的intersection()函数花了很长时间。原因在于:本质算法没有一步一步的清晰搞懂,只靠模糊的思想写出来的程序必定会有bug!
如:set1与set2求intersection时(升序),思想:set2的每一个元素与set1的元素进行比较,只要比set1元素大,则set1的这个元素删除,同时继续与set1的下一个元素比较,直到不满足set2的这个元素大于set1的元素的情况。这种情况又有2中子情况:==或者<。“==”的时候删除set1的这个元素,set2的元素插入set1后边;“<”的时候set2的下一个元素与该元素进行比较,重复前边操作。注意点:为了防止访问invalidnode,分别对set1与set2的最后一个点进行单独处理,则加入while控制条件,使最后一个点不进入循环体(j>1 / i>1),则在循环体外检查并操作j==1/i==1的情况。j==1时,有3种情况:< 、==、 >。分别讨论。
5、在调用对象函数前,注意检查是否valid,用if来判断。这之后才能调用相关函数。
6、外部类Set使用DList时,最好用DList的父类类型List声明,以免后期需要使用List的其他子类,如SList类。
7、类DList需要用DListNode()构造函数来创建新节点时候,避免直接使用DListNode(),而是创建方法method newNode(),在方法中返回DListNode()。这样后期需要使用其他节点类型:如SListNode时候,不需要对DList类中换掉所有DListNode(),只需要在方法newNode中,返回SListNode()即可。
8、注意Exception的使用。try-catch-finally或者throw exception
回复

使用道具 举报

🔗
 楼主| smoothiethu 2019-9-17 06:53:09 | 只看该作者
全局:
smoothiethu 发表于 2019-9-17 06:47
hw5 借用别人的收获paste到这里,自己用来复习的时候用把:
收获
0、Set.java 与package list真正体现了p ...

又是收获满满的一次作业。。
我自己出现的几个问题,Exception处理的时候要考虑到每一个函数。
test一定要做充分,做到每种情况,我因为前面DList和DListNode有问题却test没发现,导致后面的Set一直出问题,debug的时候去看了DList和DListNode才发现原来insertBefore和After的时候有一个node的连接忘了connect。
注意封装的作用是不直接调用内部的数据结构,改用一些interface来调用,从而保护内部程序。
Comparable的接口的使用进行了学习。
做insert和intersection的时候一定要讨论current node是不是最后一个node,因为要调用next(), prev()等函数。一开始做的时候没有讨论,导致了可以compile,测试结果却不对。
声明List父类比声明DList要好一点,incase我们要用SList等。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表