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
。