CMU 15-445(Fall 2023) Project0 C++ Primer 个人笔记
CMU-15445 Project0
c++语法问题我直接问的gpt
测试文件
测试文件都存放在/bustub-private/test目录下,可以自己修改里边的测试方法并且查看有哪些特殊情况需要处理。


Task1
Get方法
使用一个cur节点指向当前正在查找的节点,index指向当前当前正在查找的字符,在children_中查找key[index],没找到则返回nullptr,找到了则更新cur和index,查找到最后一个字符进行判断。
Put方法
维护一个cur节点,指向最后一个公共节点,初始值为root_->Clone()。然后遍历key,把公共的节点都Clone一下,同时更新cur节点,直到没有公共节点,再从cur节点处开始插入即可。
当先插入("aaa", 123), 再插入("aa", 456)时,要把aa对应的节点转换成一个带值的节点。
当key是""单独处理一下,直接存储在根节点当中即可。

Remove方法
查找到要删除的节点,然后根据注释中的说明分情况将节点删除即可。
删除后还要注意当前节点被删除后,父节点可能没有children,那么父节点也需要被删除。我使用递归的方法去检查父节点是否需要删除。

Task2
Get方法直接按照注释实现即可。
Put方法和Remove方法要参考Get方法的实现和任务的要求,仔细思考一下加锁时机即可。
提交
在使用make submit-p0生成zip后,要在根目录调用一下 python3 gradescope_sign.py。

通过截图
