如果将Container ADT(抽象数据类型)视为黑盒子,它提供两个函数:
1. put(C, x)
2. get(C)
第一个函数将对象x放入容器C中。第二个函数将从容器C中检索“下一个”对象,其中“next”取决于您想要的容器类型。堆栈实现将返回最近放入容器的元素(也称为FILO ADT)。
我的问题是,在它最通用的形式中,Container ADT函数get()是否从容器中删除元素本身,还是只是返回对它的引用以进行访问,将元素保留在Container中?
答案 0 :(得分:2)
如果您只有put()
和get()
,get()
也必须删除该元素,否则您将无法访问每个n!= 1的第n个元素。
这个想法有足够的get()
个观点,你应该能够访问容器中的每个元素,如果get()
没有删除元素,那么顺序get()
的将始终返回相同的元素,因此只有第一个元素是可访问的。
但当然,每种实施方式可能有所不同。 (例如,你可以用put(),get()和pop()创建一个ADT,其中get只返回元素。