2010-11-06 59 views
0

我正在使用BST(二叉搜索树)构建数据库,我希望用户能够回滚最后5条命令。有什么建议么?我正在使用Java。ROLLBACK undo redo

+0

树有多大?如果它足够小,您可以保留最近5次操作的副本。 – leonm 2010-11-06 22:27:43

+0

不是很大。我将如何处理经纬度5操作? – user475529 2010-11-06 22:48:30

+0

@ user475529:不要保留最近五次操作,每次操作后复制整个树并保留最近五次操作。 – 2010-11-07 00:02:46

回答

0

这听起来像你想Memento pattern。实质上,您创建一个对象,其中包含以下所需的所有信息:

  1. 从操作之前的树状态开始,重复该操作。 (重做)
  2. 从操作后的树状态恢复操作。 (撤消)

你会保留最后五个。当用户请求撤消时,请采取最新措施,让其恢复操作,然后以某种方式(例如,某些索引变量)指示您在纪念品列表中的位置。然后,您应该能够在任一方向移动列表,尽可能多地撤消和重做。

+0

我想着插入我的树到一个堆栈弹出它时,用户调用撤消?这是可能的吗?/ – user475529 2010-11-09 06:50:41

+0

你当然可以这样做,但使用纪念品可以节省大量空间,同时仍然允许撤销/重做功能。 – cdhowie 2010-11-09 06:52:32