您现在所在的是:

西门子SIEMENS

回帖:6个,阅读:1157 [上一页] [1] [下一页]
* 帖子主题:

程序问题

1033
trrtrr
文章数:35
年度积分:50
历史总积分:1033
注册时间:2005/5/13
发站内信
发表于:2005/6/6 15:04:00
#0楼
S7-200指令中有加表指令ATT,但没有减表指令,这很不符合实际运用,就象数据库有增就应该有减,请各位大侠想想,能用什么方法可以在表中提取数据又不破坏表的完整性.
2584
tuxw
文章数:732
年度积分:50
历史总积分:2584
注册时间:2004/6/5
发站内信
发表于:2005/6/7 8:08:00
#1楼
FIFO/LIFO 不能用吗?
分别从表头或表尾取数并将该数从表中移去
请管理员帮忙注销掉我的帐号
不要联系我,直接注销好了,谢谢
1033
trrtrr
文章数:35
年度积分:50
历史总积分:1033
注册时间:2005/5/13
发站内信
发表于:2005/6/7 10:53:00
#2楼
以下是引用tuxw在2005-6-7 8:08:00的发言:
FIFO/LIFO 不能用吗?
分别从表头或表尾取数并将该数从表中移去


可是要想从表中间取数,那要用什么好的方法呢.
1370
Shyer
文章数:149
年度积分:50
历史总积分:1370
注册时间:2004/3/16
发站内信
发表于:2005/6/7 12:00:00
#3楼
自己用指针建立表,再用指针查询
2584
tuxw
文章数:732
年度积分:50
历史总积分:2584
注册时间:2004/6/5
发站内信
发表于:2005/6/8 10:35:00
#4楼
中间取数只能用指针+索引的方法

不过只能取,不能删,除非你手工维护表,可以写个程序,取数后将后面的项前移,然后将表长减1,相当于给表增加一条指令

算法很简单,复杂度是线性的,为O(n),但总的来说这样效率比较低,如果表很大,且取的数在前面,移动操作很耗时的。

我怀疑 FIFO 指令用的也是该算法,因为表结构中没有表头表尾的指针,不可能通过循环表来实现高效取数,这个可以验证一下(时间关系,偶没做,你可以试试):每执行一次 FIFO,就观察表内的数据变化,看其位置是否变化


[此贴子已经被作者于2005-6-8 10:40:25编辑过]
请管理员帮忙注销掉我的帐号
不要联系我,直接注销好了,谢谢
1033
trrtrr
文章数:35
年度积分:50
历史总积分:1033
注册时间:2005/5/13
发站内信
发表于:2005/6/13 19:14:00
#5楼
以下是引用tuxw在2005-6-8 10:35:00的发言:
中间取数只能用指针+索引的方法

不过只能取,不能删,除非你手工维护表,可以写个程序,取数后将后面的项前移,然后将表长减1,相当于给表增加一条指令

算法很简单,复杂度是线性的,为O(n),但总的来说这样效率比较低,如果表很大,且取的数在前面,移动操作很耗时的。

我怀疑 FIFO 指令用的也是该算法,因为表结构中没有表头表尾的指针,不可能通过循环表来实现高效取数,这个可以验证一下(时间关系,偶没做,你可以试试):每执行一次 FIFO,就观察表内的数据变化,看其位置是否变化


[此贴子已经被作者于2005-6-8 10:40:25编辑过]
谢谢您的回复
我开始也是用手工维护表,但步数太多,程序过于复杂,维护不便.

您说的FIFO 指令用的算法,我已经验证过,算法相同,但它是自动维护.

看来是没有更好的方法了.
2584
tuxw
文章数:732
年度积分:50
历史总积分:2584
注册时间:2004/6/5
发站内信
发表于:2005/6/14 19:09:00
#6楼
抽空写了几个子程序,扩展一下表指令
到这里看看:http://spaces.msn.com/members/tuxw/Blog/cns!1p1KRL2snDHMdTagFMfJCgKg!548.entry
请管理员帮忙注销掉我的帐号
不要联系我,直接注销好了,谢谢

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

62.4004