1412: 文件存储结构测试(for bookstore)
题目
题目描述
本题是 Bookstore 大作业的文件存储部分的检查。
需要基于文件存储实现一个 Key-value database(键值数据库),即在文件上实现类似 std::map
的功能。
实现方式不限,可以是 块状链表 or whatever you want。但禁止将非当前指令所需数据存储于内存中。
本题输入指令有以下三种情况:
insert [index] [value]
-
以
[index]
为索引,插入值为[value]
的条目 -
delete [index] [value]
-
删除以
[index]
为索引,值为[value]
的条目。请注意,删除的条目可能不存在 -
find [index]
- 找出所有索引为
[index]
的条目,并以[value]
升序顺序输出,每个[value]
间用一个空格隔开。若索引值为[index]
的条目不存在,则输出[null]
。在整个指令输出结束后输出\n
其中,[index]
为长度不超过 64
个字节的字符串(无空白字符),[value]
为 int
范围内的整数。
数据中,[index]
和 [value]
均可能重复,但同一个 [index]
对应的 [value]
不可重复。
如果使用 Git 提交代码,请参考 Bookstore 评测方式说明👈这是个 link。本题除样例外无公开数据点
此外,对于在 Bookstore 中使用文件存储的建议:
- 可以将整个存储单元、文件读写模块封装成一个类。
- 如果要用该类对不同的对象进行存储,可以写成模板类。
输入格式
第一行为整数n,表示总命令数。
接下来n行为n条指令,指令为上文提到的三种指令之一。
输出格式
在执行find index
指令后,找出所有索引为index
的条目,并以value
升序的顺序输出,每个value
间用一个空格隔开。若索引值为index
的条目不存在,则输出null
。在整个指令输出结束后回车换行
样例输入
8
insert FlowersForAlgernon 1966
insert CppPrimer 2012
insert Dune 2021
insert CppPrimer 2001
find CppPrimer
find Java
delete Dune 2021
find Dune
样例输出
2001 2012
null
null
数据范围
$1\le n \le 100000$
存储的总条目数不超过$100000$
保证输入数据合法
注意,测试中有需要在上一运行结果的基础上继续操作的测试点,而文件的清除操作将由评测机完成,因此你只需要检查文件是否存在,若不存在则创建一个文件
Oops! 本题目还没有解答!
助教老师们编题的速度,已经超过了解题的速度!
OJ翻了一新,但本解答集还大多用的是2017-2019级,甚至更早的同学们贡献的答案。
如果你已经AC了,可以的话,请您参考添加页面,与大家一起分享你的题解!