社区
数据结构与算法
帖子详情
【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
打赏
收藏
【100分】redo undo
想写个redo undo,各位高手麻烦给点思路 比如,Insert,insert,remove,undo,undo,modify,insert,undo,undo,redo,redo 最后操作为insert,modify,insert
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
帮你顶一下
实现
Red
o
Undo
的一个简单实例,包含源码
Delphi 中实现
Red
o
Undo
的一个简单实例,包含源码
red
o
undo
framework source code
red
o
undo
framework source code
red
o
undo
framework source code
C#做的简单的
Undo
、
Red
o功能的实现
这个是做实验时,简单基本的
Undo
、
Red
o的操作、在一个winForm中实现,并且可以设置
Undo
的最大次数。包中除了项目外,还附有报告.
ORACLE
red
o
undo
.docx
Oracle
red
o
undo
的说明解释
undo
red
o 原型设计
cpp文件
undo
red
o 原型设计 部
分
代码 class Command { public: virtual BOOL
UnDo
() = 0; virtual BOOL
ReD
o() = 0; };
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章