一维数组的逻辑结构是线性结构,存储结构是顺序结构;其逻辑体现元素间一对一的前后关系,物理表现为内存中连续地址存放且支持随机访问。

一维数组的逻辑结构是线性结构,物理存储是顺序存储——这是最核心的区别。
逻辑结构:体现“关系”,不是内存布局
逻辑上,一维数组是一串有先后次序的元素,每个元素除了首尾外,都只有一个前驱和一个后继。这种“一对一、无分支、无层次”的关系,就叫线性结构。它不关心数据存在哪,只描述元素之间的抽象关系。
- 比如数组 a[0], a[1], a[2], a[3],逻辑上就是 a[0] → a[1] → a[2] → a[3] 这样一条线
- 插入、删除、查找这些操作的定义,都基于这个线性关系
- 同一逻辑结构可以用不同物理方式实现(比如用链表也能表达线性关系)
物理存储:真实落在内存里的样子
物理上,一维数组在内存中占据一段连续的地址空间,元素按索引顺序紧挨着存放。系统分配 n × k 字节(n 是元素个数,k 是单个元素字节数),从首地址开始依次排布。
- 例如 int arr[5],假设 int 占 4 字节,就会分配连续的 20 字节
- arr[0] 地址为 base,arr[1] 就是 base + 4,arr[i] 地址 = base + i × 4
- 这种连续、可计算地址的特性,让随机访问(O(1))成为可能
为什么不能把“顺序表”直接等同于“一维数组”
顺序表是逻辑结构(线性表)+ 物理实现(用一维数组)+ 操作接口(如插入、删除、长度管理)的组合体;而一维数组只是静态的内存容器,没有内置的长度记录、也不自带增删逻辑。
- 数组大小编译时固定;顺序表通常维护一个 length 变量,动态反映当前有效元素数
- 对数组做“插入”,本质是程序员手动搬移内存;顺序表则封装了这一过程,提供统一接口
- 数组本身不定义“线性表操作”,它只是被用来实现顺序表的一种工具
小结:逻辑与物理是两个层面的事
逻辑结构回答“数据之间怎么关联”,物理存储回答“数据到底放哪儿”。一维数组的线性逻辑靠顺序存储来高效支撑,但二者不可混淆——就像“列车运行路线图”和“铁轨实际铺设”一样,一张图可以对应多种铺法,一种铺法也能服务多种运行逻辑。











