【100分】redo undo

TheRealBo 2011-08-25 11:18:15
想写个redo undo,各位高手麻烦给点思路
比如,Insert,insert,remove,undo,undo,modify,insert,undo,undo,redo,redo
最后操作为insert,modify,insert
...全文
211 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
TheRealBo 2011-09-12
  • 打赏
  • 举报
回复
再顶一次,要结贴了
cc之家 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 kingwolfofsky 的回复:]
Command模式?
[/Quote]完全正确!
struct mark{
infotype;
infocontext;
};
//用vector 也可以
vector<mark*> m_vectorMark;

TheRealBo 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jingtianwen 的回复:]

如果只记录操作,实现redo容易,但实现undo是要把要撤消的命令效果去掉,还得恢复之前的状态,不好整吧。
如果记录操作目标的状态,是不是有点太小题大作了?
[/Quote]
就是要实现redo undo这两个操作,哪里小题大做?不是记录操作目标的状态,可能你理解错了
竞天问 2011-08-28
  • 打赏
  • 举报
回复
如果只记录操作,实现redo容易,但实现undo是要把要撤消的命令效果去掉,还得恢复之前的状态,不好整吧。
如果记录操作目标的状态,是不是有点太小题大作了?
TheRealBo 2011-08-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 huangliulove 的回复:]

定义两个栈,一个保存已经操作的操作,一个保存撤销的操作
每操作一次,第一个栈入栈,第二个栈清空;
每撤销一次,第一个栈出栈,第二个入栈;
每重做一次,第二个栈出栈,第一个栈入栈;
大致思路就这样咯
[/Quote]
没看很明,能再说清楚一些吗?
TheRealBo 2011-08-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zeroasan_ 的回复:]

说明:操作是指undo redo之外的insert,modify等操作。
用一个栈stack来保存操作记录,下标C标志当前操作的位置。(默认C即为stack的最后一个元素)stack中C之后的元素是你undo的操作。

步骤1. 每次Insert和modify,操作入栈,C++。
步骤2. undo之后,C相应向回移动,每次undo做C--
步骤3. 分支:
3.1. ……
[/Quote]
我去研究一下
zeroasan_ 2011-08-27
  • 打赏
  • 举报
回复
说明:操作是指undo redo之外的insert,modify等操作。
用一个栈stack来保存操作记录,下标C标志当前操作的位置。(默认C即为stack的最后一个元素)stack中C之后的元素是你undo的操作。

步骤1. 每次Insert和modify,操作入栈,C++。
步骤2. undo之后,C相应向回移动,每次undo做C--
步骤3. 分支:
3.1. 若下一步为redo, 则C++
3.2. 若下一步为undo, 则C--
3.3 若下一步为操作,则先清空stack中C之后的元素,再添加操作入栈,C再次为stack的最后一个元素。


eclipse的文本编辑器就这样,undo之后的,再次有输入操作,那么之前undo的那些就不能redo了,操作信息抛弃了。

KingWolfOfSky 2011-08-27
  • 打赏
  • 举报
回复
Command模式?
lament_gates 2011-08-27
  • 打赏
  • 举报
回复
堆栈呀~~~把所有的操作和撤销操作都保存下来.
AndyZhang 2011-08-25
  • 打赏
  • 举报
回复
将你的操作全部记录下来,然后移动指针。每个操作就是一个对象,一个单元。
具体可以加上操作类型,时间,顺序等属性。
奋斗吧 2011-08-25
  • 打赏
  • 举报
回复
定义两个栈,一个保存已经操作的操作,一个保存撤销的操作
每操作一次,第一个栈入栈,第二个栈清空;
每撤销一次,第一个栈出栈,第二个入栈;
每重做一次,第二个栈出栈,第一个栈入栈;
大致思路就这样咯
BaronZ 2011-08-25
  • 打赏
  • 举报
回复
用一个指针数组,操作一次保存成为一个元素。如果undo,则数组下标-1,redo则数组下标+1
一叶之舟 2011-08-25
  • 打赏
  • 举报
回复
帮你顶一下

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧