我正在练习几个面试问题,我发现了一个有趣的问题,那就是建立一个基本的文件系统/终端。因为这是一个面试问题,所以这个文件系统可能是一个基本的系统,它涉及添加文件和目录,以及在目录中添加文件和目录。另一个功能是以逻辑方式打印出所有目录和文件。这一切都必须在不使用Collections
库
我很想知道我将用什么数据结构来实现这个文件系统?我的想法是hashtable
或B tree
。
Hashtable可以快速查找时间。但是它会占用大量内存。我打算用素数作为我的桶尺寸。
B树的内存效率会更高。然而,查找时间会更慢。
或者两者都可能?
例如:
存储在hashtable
节点中的所有文件,而目录存放在可以分支到其他目录节点或哈希表的树节点中。
我的另一个问题是:哪一个似乎更容易编码或实现print all
函数?
答案 0 :(得分:3)
文件系统的最佳数据结构是树。如果你想到它,它自然地模拟了目录结构的层次结构
dir1
dir2
dir2a
file2b
dir3
dir3a
file3b
file3c
dir4
file4a