线性:一头一尾,每个元素只有一个前驱和一个后驱,比如栈/队列
非线性:分支、分层关系,比如树/图
物理结构和逻辑结构
数组和链表可以看做物理存储的概念。
数组是用一段连续的内存存储,可以随机访问,支持随机访问( O(1) ),但增删需移动元素( O(n) )。
链表不要求连续的内存,元素分散存储,通过指针连接,增删无需移动元素( O(1) ),但不支持随机访问( O(n) )。
而数据结构都是逻辑层的概念,线性表,非线性表,栈,队列,树,图等等。
线性表这些逻辑层的概念,底层既可以用数组实现,也可以用链表实现。线性表用数组实现就叫做顺序表。
“顺序表是在计算机内存中以数组的形式保存的线中以数组的形式保存的线性表。” 简而言之,是线性表的一种实现方式。显然,这里的“数组”指物理结构,“线性表”指逻辑结构。这个解释应该还是合理的。