我正在编写一个QML文件浏览器。现在,我想实现后退和前进功能。此功能类似于浏览器后退和前进功能。示例:
我从“/ home / text / folder1”开始,然后浏览到“/ home / text / folder1 / src”。现在我浏览到“/ home / text / folder1 / src / java”。如果我按两次,我应该在“/ home / text / folder1”,我不能再按回(按钮应该变灰或以其他方式表示没有更多的“上一个”项目要显示)。
我正在考虑通过双链表实现这一点。但是,我很难理解我应该在列表中插入新项目的位置,以及何时应该这样做。
采取前面的例子: 如果不按两次,我只按一次(我现在在“/ home / text / folder1 / src”)。如果我突然去“/ home / text / folder2”,现在怎么办?我的双链表怎么样呢?
这是一个数据结构问题,而不是实现,因此不需要代码。
答案 0 :(得分:3)
我认为使用双重LinkedList的想法是一个很好的开始。如果输入新目录,则在当前项目之后添加新项目,丢弃链接列表的尾部。
假设我们在文件夹1,2,3中(即我们有列表1->2->[3]
,方括号表示当前节点)。现在我们返回两次,如果我们现在转到新文件夹4,则生成[1]->2->3
,我们获得1->[4]
,因此我们放弃了2->3
部分。
答案 1 :(得分:1)
我会有一个堆栈,而不是一个列表。每个前进导航都会在堆栈上放置一个链接;每次返回时,都会从堆栈中删除该项目。