总结:
数据的逻辑结构、数据的存储结构及数据的运算这三方面是一个整体。孤立地去理解一个方面,而不注意它们之间的联系是不可取的。
逻辑结构可以分为:线性结构和非线性结构。
对于一些现实数据项,在讨论其数据结构时我们一般先看其逻辑结构是怎样的,如果这些数据项是线性结构即每个数据项只有一个前驱节点并且只有一个后继结点,则我们在逻辑结构中的线性结构中寻找合适的数据结构对其进行处理(比如线性表,栈、队列等等);如果这些数据项是非线性结构即每个数据项不止有一个前驱或者后继,这时我们就要在逻辑结构中的非线性结构中寻找合适的数据结构对其进行处理(比如图、集合等等)。
存储结构可以分为:顺序存储、链式存储、散列存储和索引存储,其中数组作为顺序存储的典型应用,链表作为链式存储的典型应用。
在确定了数据所采用的逻辑结构之后,接下来就要对其进行存储,基本的存储方式有数组和链表两种,用这两种存储方式能够实现大部分数据的存储,不管是线性结构或者非线性结构。
存储结构是数据结构不可缺少的一个方面:同一逻辑结构的不同存储结构可冠以不同的数据结构名称来标识。
【例】线性表是一种逻辑结构,若采用顺序方法的存储表示,可称其为顺序表;若采用链式存储方法,则可称其为链表;若采用散列存储方法,则可称为散列表。
数据的运算也是数据结构不可分割的一个方面。在给定了数据的逻辑结构和存储结构之后,按定义的运算集合及其运算的性质不同,也可能导致完全不同的数据结构。
【例】若对线性表上的插入、删除运算限制在表的一端进行,则该线性表称之为栈;若对插入限制在表的一端进行,而删除限制在表的另一端进行,则该线性表称之为队列。更进一步,若线性表采用顺序表或链表作为存储结构,则对插入和删除运算做了上述限制之后,可分别得到顺序栈或链栈,顺序队列或链队列。