代码之家  ›  专栏  ›  技术社区  ›  Peter Jankuliak

具有多个游标的类似拉链的数据结构

  •  24
  • Peter Jankuliak  · 技术社区  · 14 年前

    当一个人想要遍历一棵树并保持当前位置时,zippers数据结构是很好的,但是如果他们想要跟踪多个位置,应该使用什么样的数据结构呢?

    让我举例说明:

    • haskell频道有人告诉我,在yi编辑器中,拉链是用来表示 光标位置。这很好,但是如果你想要两个呢 光标。例如,如果你想表示一个选择,你需要知道开始和结束
    • 在维基上的牛头怪例子中,他们用拉链来表示牛头怪在迷宫中的位置。如果我想把敌人加入迷宫,用拉链代表他们的位置也同样有意义。
    • 最后一个事实上是从我的小项目开始的:作为学习Haskell的一部分,我尝试使用cairo和gth2hs来可视化树结构。到目前为止进展顺利,但现在我想选择一个或多个节点,并能够移动它们。因为我不能只使用多个选定的节点 教科书中定义的拉链。

    here .

    也就是说,例如在我的示例项目中,我会将所选节点存储在索引映射中,并用索引替换它们在主结构中的表示。但这种解决方案有很多缺点。就像上面链接中解释的那样,或者说,在我的示例中,取消选择所有节点将需要搜索整个树。

    2 回复  |  直到 12 年前
        1
  •  13
  •   Don Stewart    14 年前
        2
  •  10
  •   Paul Johnson    14 年前

    看到了吗 this paper