堆栈的ADT规范修改

时间:2011-09-21 05:18:50

标签: data-structures specifications abstract-data-type stack

我是自己做的,我只是想确认它是对的。我应该修改堆栈的ADT规范,以便将操作视为计数(返回堆栈中元素的数量),change_top(用给定元素替换堆栈的顶部)和wipe_out(删除所有元素)。还要根据需要包括新的公理和先决条件。

这就是我所拥有的:

TYPES

•   STACK[G]


FUNCTIONS
•   put: STACK[G] x G -> STACK[G]
•   remove: STACK[G]-/> STACK[G]
•   item: STACK[G] -/> G
•   empty: STACK[G] -> BOOLEAN
•   new: STACK[G]
•   count: STACK[G] -> INTEGER
•   change_top: STACK[G] x G -> STACK[G]
•   wipe_out: STACK[G]


AXIOMS

For any x:G, s:STACK[G]

•   A1 - item(put(s,x)) = x
•   A2 - remove(put(s,x)) = s
•   A3 - empty(new)
•   A4 - not empty(put(s,x))
•   A5 - count(new)


PRECONDITIONS

•   remove(s:STACK[G]) require not empty(s)
•   item (s:STACK[G]) require not empty(s)
•   change_top (s:STACK[G]) require not empty(s)

1 个答案:

答案 0 :(得分:1)

您是否可以与TA交谈?无论如何,change_top应标记为-/>,因为您给了它一个先决条件。 wipe_out应该采用堆栈参数吗?

Axiom A5格式不正确,因为count返回一个整数,而不是布尔值。你需要count的另一个公理,以及change_topwipe_out的公理。