Jas*_*son 6 language-agnostic data-structures
今天算法类的主题是重新实现数据结构,特别是Java中的ArrayList.您可以通过各种方式自定义结构这一事实肯定让我感兴趣,特别是对add()和iterator.remove()方法的变体.
但重新实现和定制数据结构是否与学术界人士和现实世界的程序员更感兴趣?有没有人在商业应用程序/程序中重新实现他们自己的数据结构版本,为什么你选择了特定语言实现的路线?
了解数据结构是如何实现以及可以实现的绝对是每个人都感兴趣的,而不仅仅是学者。如果该语言已经提供了具有合适功能和性能特征的实现,那么您很可能不会重新实现数据结构,但您很可能必须通过组合其他数据结构来创建自己的数据结构......或者您可能需要实现一个与众所周知的数据结构行为略有不同的数据结构。在这种情况下,你当然需要知道原始数据结构是如何实现的。或者,您最终可能需要一个不存在的数据结构,或者它提供与现有数据结构类似的行为,但它的使用方式要求它针对不同的函数集进行优化。同样,这种情况需要您知道如何实现(和更改)数据结构,所以是的,它很有趣。
编辑
我并不提倡您重新实现现有的数据结构!不要那样做。我想说的是,这些知识确实有实际应用。例如,您可能需要创建一个双向映射数据结构(可以通过组合两个单向映射数据结构来实现),或者您可能需要创建一个堆栈来跟踪各种统计数据(例如最小值、最大值、意思)通过使用现有的堆栈数据结构和包含该值以及这些各种统计信息的元素类型。这些是您可能需要在现实世界中实施的一些简单示例。