我目前正试图以“精确”的方式定义抽象数据类型,但我目前正在努力解决它。练习的全部内容是定义它们而不指定任何实现细节。我在这里使用stack
和queue
,因为它们是简单的示例,但问题可以推广。到目前为止,我的尝试都是基于限制因素:
堆栈是具有构造函数Stack()
和方法push(o)
和pop()
的对象类型,因此对于任何List originalList
(伪代码):
stack = Stack()
for o in originalList:
stack.push(o)
while obj = stack.pop() != NIL:
newList.append(obj)
assert(newList == originalList.reverse())
对于队列,它将是相同的,但最后一行将是assert(newList == originalList)
。
我的问题是这个“定义”需要“实际计算”和“断言”,与此相反。静态地说LinkedList
是一对(value, next)
,所以next是指向同一类型元素的指针。
还有更好的方法吗?有人能指出我合适的文献吗?