data-structures - 浏览历史记录背后的数据结构

标签 data-structures linked-list array-algorithms

我正在编写一个 QML 文件浏览器。现在,我想实现一个 backforward 函数。此功能类似于浏览器的后退和前进功能。示例:

我从“/home/text/folder1”开始并浏览到“/home/text/folder1/src”。现在我浏览到“/home/text/folder1/src/java”。如果我按两次后退,我应该位于“/home/text/folder1”,并且我不能再按后退(该按钮应该变灰或以其他方式指示没有更多“以前的”项目可显示) )。

我正在考虑通过双链表来实现这一点。但是,我很难理解应该在列表中的何处插入新项目以及何时插入。

以前面的例子为例: 如果我不按返回两次,而是只按返回一次(我现在位于“/home/text/folder1/src”)。如果我突然转到“/home/text/folder2”,现在怎么办?我的双链表现在应该是什么样子?

这是一个数据结构问题,而不是实现问题,因此不需要代码。

最佳答案

我认为你使用双向链表的想法是一个很好的起点。如果您输入一个新目录,则会在当前项目之后添加新项目,并丢弃链表的尾部。

假设我们位于文件夹 1,2,3 中(即我们有列表 1->2->[3],方括号表示当前节点)。现在我们返回两次,结果是 [1]->2->3 如果我们现在转到新文件夹 4,我们会得到 1->[4],所以我们丢弃了 2->3 部分。

关于data-structures - 浏览历史记录背后的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6815797/

相关文章:

array-algorithms - 数组中的最大元素等于数组中两个元素的乘积

c# - 使用数组进行独特行程选择的最佳性能算法?

java - 将包/类名称列表转换为父/子数据结构

typedef 和 struct 之间的类型冲突

java - java中n*4表的数据结构

java - Java 中的 2D LinkedList.contains()

java - 使用自定义 LinkedList 类的薪资系统

algorithm - 关联数组查找成本

database - 在数据库中存储深层目录树

java - 应该使用哪个集合来存储内存中的xml文件?