3

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

我从“/home/text/folder1”开始并浏览到“/home/text/folder1/src”。现在我浏览到“/home/text/folder1/src/java”。如果我按两次,我应该在“/home/text/folder1”,我不能再按回(按钮应该是灰色的或以其他方式表明没有更多的“以前的”项目要显示)。

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

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

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

4

2 回答 2

3

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

假设我们在文件夹 1,2,3 中(即我们有 list 1->2->[3],方括号表示当前节点)。现在我们返回两次,导致[1]->2->3如果我们现在转到一个新文件夹 4,我们获得1->[4],因此我们丢弃了该2->3部分。

于 2011-07-25T14:03:04.013 回答
1

我会有一个堆栈,而不是一个列表。每个向前导航都会在堆栈上放置一个链接;每次返回时,都会从堆栈中删除该项目。

于 2011-07-25T12:07:41.840 回答