Types 将堆栈和队列定义为抽象数据类型

Types 将堆栈和队列定义为抽象数据类型,types,stack,queue,abstract-data-type,Types,Stack,Queue,Abstract Data Type,我目前正试图以一种“精确”的方式定义抽象数据类型,但我目前正在努力解决这个问题。本练习的重点是在不指定任何实现细节的情况下定义它们。我在这里使用的是stack和queue,因为它们都是简单的例子,但问题可以推广。到目前为止,我的尝试基于以下限制: 堆栈是具有构造函数stack()和方法push(o)和pop()的对象类型,因此对于任何列表原始列表(在伪代码中): 对于队列,它是相同的,但最后一行是assert(newList==originalList) 我的问题是,这个“定义”需要“实际计算”

我目前正试图以一种“精确”的方式定义抽象数据类型,但我目前正在努力解决这个问题。本练习的重点是在不指定任何实现细节的情况下定义它们。我在这里使用的是
stack
queue
,因为它们都是简单的例子,但问题可以推广。到目前为止,我的尝试基于以下限制:

堆栈是具有构造函数
stack()
和方法
push(o)
pop()
的对象类型,因此对于任何
列表原始列表(在伪代码中):

对于队列,它是相同的,但最后一行是
assert(newList==originalList)

我的问题是,这个“定义”需要“实际计算”和“断言”,而不是静态地说
LinkedList
是一对
(值,下一个)
,因此下一个是指向相同类型元素的指针

有没有更好的办法?有人能给我指点合适的文学作品吗

stack = Stack()
for o in originalList:
    stack.push(o)
while obj = stack.pop() != NIL:
    newList.append(obj)
assert(newList == originalList.reverse())