CMU 15-445(Fall 2023) Project0 C++ Primer 个人笔记

焚风 / 2024-02-02 / 原文

CMU-15445 Project0

c++语法问题我直接问的gpt

测试文件

测试文件都存放在/bustub-private/test目录下,可以自己修改里边的测试方法并且查看有哪些特殊情况需要处理。

Task1

Get方法

使用一个cur节点指向当前正在查找的节点,index指向当前当前正在查找的字符,在children_中查找key[index],没找到则返回nullptr,找到了则更新curindex,查找到最后一个字符进行判断。

Put方法

维护一个cur节点,指向最后一个公共节点,初始值为root_->Clone()。然后遍历key,把公共的节点都Clone一下,同时更新cur节点,直到没有公共节点,再从cur节点处开始插入即可。

当先插入("aaa", 123), 再插入("aa", 456)时,要把aa对应的节点转换成一个带值的节点。

key""单独处理一下,直接存储在根节点当中即可。

image-20240111011656108

Remove方法

查找到要删除的节点,然后根据注释中的说明分情况将节点删除即可。

删除后还要注意当前节点被删除后,父节点可能没有children,那么父节点也需要被删除。我使用递归的方法去检查父节点是否需要删除。

Task2

Get方法直接按照注释实现即可。

Put方法和Remove方法要参考Get方法的实现和任务的要求,仔细思考一下加锁时机即可。

提交

在使用make submit-p0生成zip后,要在根目录调用一下 python3 gradescope_sign.py

通过截图