已经实现的代码都在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系统设置了这个环境变量也没法用,解决办法如下:

万能chat

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······想到这点的时候人昏迷了,全靠调自己写过的函数就可以完成了。