cs61b-lab
已经实现的代码都在GitHub,欢迎拷打:yoo2i/cs61b (github.com)
前言
开启了数据结构的旅程,版本是21spring,先给出我用到的链接:
本文将更新我在做lab时遇到的各种困难,包括但不限于配置问题、思路问题等等。
proj遇到的问题将放在另一篇文章里。
(下文待整理)
遇到的一些问题:
1.新IDEA没有教程里所说的那个“For new projects” 打开看一眼的
2.还是pom.xml
“找不到插件 ‘org.apache.maven.plugins:maven-compiler-plugin:3.1’”
lab2 setup
- 新idea没有为未来所有项目
直接在欢迎界面设就ok
- 按着教程设置完找不到maven,pom.xml报错之类的
文档里说找maven的路径可以是pwd得来的,但是结果不符合Windows路径格式,别信,Windows是D:\test\test这样子,和它输出的不完全一样
lab3 lab4
没遇到问题这俩,也可能是时间久远有点忘了
lab5
是code review,没啥实质性任务
lab6
我是Windows系统,make和它的一系列指令只能在以前装的类Linux的shell里面用,不能在idea提供的终端里面用(它提供的终端是powershell)。
还遇到git显示我版本有问题,出现在library-sp21,版本回退就好了(可能是我的误操作导致的,大伙应该不会遇到)。
在Mandatory Epilogue: Debugging这个部分中,运行runner.py需要具有环境变量REPO_DIR,但是Windows系统设置了这个环境变量也没法用,解决办法如下:
lab7
正常写必需功能的时候没什么问题,但是写remove的时候出问题了。
在bst的删除中,如果需要删除叶子节点or只有一个孩子的节点,只需要将
lab8
- 创建一个私有成员变量HashSet去保存所有key的值(方便iterator和keySet)
- remove方法throw一个UnsupportedOperationExceptions
- buckets就是backing array
- 不需要减小buckets
- 为了避免负数取模的影响,使用Math.floorMod(x,y)
- 如果有相同的key就更新value
以下内容涉及剧透
沟槽的iterator,最开始一直想怎么实现一个合适的迭代器,毕竟遍历这个map确实有点难度;突然想起文档里说设置keySet就是为了方便keySet方法和iterator,所以直接返回keySet.iterator()就够了······
给buckets扩容也需要迭代,但是我们迭代器迭代的内容是key,怎么确定每个节点呢······答案是用上面写好的get······想到这点的时候人昏迷了,全靠调自己写过的函数就可以完成了。