在计算机科学中,资料结构(data
structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的资料结构可以带来最优算法效率的演算法。一般而言,资料结构的选择首先会从抽象数据类型的选择开始。 一个设计良好的资料结构,应该在尽可能使用较少的时间与空间资源的前提下,为各种临界状态下的运行提供支持。资料结构可通过编程语言所提供的数据类型、引用及其他操作加以实现。
不同种类的资料结构适合於不同种类的应用,而部分甚至专门用于特定的作业任务。例如,当计算机网路依赖於路由表运作时,B树高度适用於资料库的封装。
在许多类型的程序设计中,选择适当的资料结构是一个主要的考虑因素。许多大型系统的构造经验表明,封装的困难程度与最终成果的质量与表现,都取决於是否选择了最优的资料结构。在许多时候,确定了资料结构後便能很容易地得到演算法。而有些时候,方向则会颠倒过来:例如当某个关键作业需要特定资料结构下的演算法时,会反过来确定其所使用的资料结构。然而,不管是哪种情况,资料结构的选择都是至关重要的。
系统构造的关键因素是资料结构而非演算法的这一深入理解,导致了多种形式化的设计方法与程式语言的出现。绝大多数的语言都带有某种程度上的模块化思想,通过将资料结构的具体实现封装隐藏於受限介面後方的方法,来让不同的应用程序能够安全地重用这些资料结构。C++、Java等物件导向的程序设计语言可使用类来完成这一功能。 因为资料结构的重要性毋庸置疑,现代程式语言及其运行环境在标准库中都包含了多种的资料结构,例如C++标准模板库中的容器、Java集合框架以及微软的.NET
Framework。 大多数资料结构都由数列、记录、可辨识联合、引用等基本类型构成。举例而言,可空引用(nullable
reference,一种可被置空的引用)是引用与可辨识联合的结合体,而最简单的链式结构链表则是由记录与可空引用构成。
资料结构意味著:一个资料结构可被视为两个函数之间的介面,或者是由数据类型联合组成的存储内容的访问方法封装。 |