2

可能重复:
具有多个光标的拉链式数据结构

让 T 一棵大树(或另一个大数据结构)。假设您在其中有一些兴趣点(P = {p1, p2, ...} 其中 pN in T)。您可以为每个 pN 使用拉链,但是,如果我必须在某些 pN 上更新 (CRUD) T 怎么办?

忽略共享内存问题(通过锁解决),使用命令式语言我可以使用指针。更新 pN 我真的在更新 T。

(“纯”)Haskell的正确方法是什么?

谢谢!

注意:P 是一个真实的列表,我们总是有兴趣点的 P,我们可以一次更新一个点,部分或全部。P的存在是为了避免每次搜索每个pN(T很大)。再次感谢!

更新:对不起,我找到了对我的问题的正确答复(像拉链一样具有多个游标的数​​据结构),我如何更新(或删除)我的问题?

4

1 回答 1

1

“您可以为每个 pN 使用拉链”

想象一个文字冒险游戏,比如 Zork。你是拉链,T 是你正在探索的树世界。在房间 p7 中,您可以更改内容并在 CRUD 中执行 U。然后你看看你的选择:

  • 你可以向上移动树 T
  • 您可以向左移动树 T
  • 您可以向左向右移动树 T

该列表涵盖了二叉树中的基本动作,您的 T 可能会有所不同。要更新所有的 P,你沿着一些路线走拉链来访问所有的 p1、p2、p3 等。一个简单的路线是从 T 的根开始,下降到 p1,回到 T 的根,下降到p2,回到 T 的根,下降到 p3,等等。

最终你完成并离开 T 世界。这通常被称为“关闭拉链”。

于 2012-08-27T08:32:51.487 回答