当有人说“列表”并提供没有任何内部细节的基本界面时,例如:
bool init ( List *plist)
bool free ( List *plist)
size_t size (const List *plist)
bool insert( List *plist, const Item *pitem)
bool delete( List *plist, int idx);
通常的实现是什么?也就是说,它通常是指“单链表”、“双链表”、“动态数组”还是以上任何一种?基本上,列表是一个通用术语,可以表示数据结构的许多变体,或者它通常是否建议特定的实现,除非另有说明。
抽象数据类型 (ADT) 的重点是关注如何使用数据类型,而不是如何实现它。ADT 的接口应反映在预期用例中高效所需的操作。
话虽如此,我希望这个特定 ADT 的实现是一个动态数组,可能带有哈希索引。但这与数据类型的名称无关。
List
没有说太多,它所说的(在我看来,元素按某种特定顺序排列)并没有反映在界面中。事实上,我完全不确定那个界面的意义是什么。我看到你如何将东西放入收藏中。但是你如何找回它们呢?
无论如何,没有容器名称的最终权威。因此,您可以像 Humpty Dumpty 一样自由地使用词语来表达您希望它们表达的意思。我提到的工作是由数学家写的,这并非巧合。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句